knitr::opts_chunk$set(message=F, warning=F)
set.seed(12345) # for reproducibility
options(knitr.kable.NA = '')

# Some packages need to be loaded. We use `pacman` as a package manager, which takes care of the other packages. 
if (!require("pacman", quietly = TRUE)) install.packages("pacman")
if (!require("Rmisc", quietly = TRUE)) install.packages("Rmisc") # Never load it directly.
pacman::p_load(tidyverse, papaja, knitr, ggplot2, car, lme4, afex, emmeans, parallel, ordinal, psych, gridExtra, MuMIn,
               ggbeeswarm, RVAideMemoire, apaTables, scales, matlab, rcompanion, nortest, psycho, ggpubr)
devtools::install_github("thomasp85/patchwork")
remotes::install_github("rlesur/klippy")
library("patchwork"); library("klippy")
klippy::klippy()




1 방법


1.1 참가자


정상 시력의 학부생 38명이 인터넷 홈페이지를 통해 모집되었다(여 18명, 평균 연령 24.79세, 표준 편차 2.48). 이 중 2명의 참가자가 과도하게 낮은 수행 및 개인 사정으로 실험 중도에 제외되어, 총 36명이 실험에 참여하였다. 36명의 참가자는 실험 집단에 18명, 통제 집단에 18명 할당되었다. 참가자들은 실험에 앞서 서면으로 작성된 실험 참가 동의서에 서명하였으며, 25,000원 상당의 문화상품권을 참가 보상으로 수령하였다.


본 실험의 참가자 수는 예비 실험에 근거한 검증력 분석, 선행 연구의 참가자 수, 조건 간 역균형화를 고려하여 설정되었다. 검증력 분석은 G*Power 소프트웨어를 통해, 집단 간 출처 혼동과 침범에 대한 비대칭적 패턴 반응의 상호작용, 집단 간 예측 오류 조건에 따른 비단조적 침범 패턴의 상호작용 효과 크기를 80% 검증력으로 적용하여 수행되었다(Faul, Erdfelder, Lang, & Buchner, 2007). 2(집단: 실험 집단, 통제 집단) × 2(반응: 출처 혼동, 침범)의 두 요인 간 상호작용의 효과 크기(ηp2 = .23)을 바탕으로 표본수를 산출한 결과, 총 32명의 참가자 수가 필요한 것으로 나타났다. 또한, 비단조적 기억 갱신 효과와 관련된 2(집단: 실험 집단, 통제 집단) × 4(예측 오류 조건: PE 1, PE 2, PE 3, PE 4) 혼합 요인 분산 분석의 상호 작용의 효과 크기(ηp2)는 .35였다. 이를 세 예측 오류 조건의 본 실험 패러다임에 적용하여 산출된 표본수는 18명으로 나타났다. 두 번째로 본 실험과 유사한 패러다임을 사용한 연구의 표본수는 집단당 20명에서 48명으로 다양하였다. Hupbach 등(2009)의 첫 번째 실험에는 20명, Sinclear와 Barense(2018)에서는 실험 1에 48명, Forcato 등(2016)에선 36명의 참가자가 참여하였다. 마지막으로, 본 실험의 패러다임에서 예측 오류 조건은 각 참가자에게 제시된 색 단서에 따라 3가지로 구분되었기 때문에, 색 단서 - 오류 조건의 조합을 완전 역균형화하기 위해 최소 6명(3P3 = 6)이 각 집단에 할당될 필요가 있다. 이러한 점과 추정된 적정 참가자수를 고려하여 총 참가자 수는 36명으로 설정되었다.


1.2 장치 및 자극


장치 및 자극은 물체 자극을 제외하고 예비 실험과 동일하였다. 물체 자극은 예비 실험에서 사용된 자극에서 정체성을 알아보기 어렵거나 친숙하지 않다고 보고된 물체를 대체하고, 인터넷과 물체 모음집(Brady et al., 2008)에서 30개를 더 수집하여 총 270개의 물체 그림이 사용되었다. 물체(7.21°× 7.21°)는 색을 회색조로 조정한 후 각 회기에 제시되는 세 개의 물체 목록(목록 1, 목록 2, 목록 3)에 90개씩 무작위로 할당하였다. 목록 1과 목록 2에서 세 개의 하위 연합 기억을 형성하기 위해 세 가지 색을 사용한 연합 색 상자 자극(11.98°× 11.98°)을 구성하였다. 예비 실험의 연합 기억 학습에서 색에 따른 연합 기억 정확도를 비교한 결과, 첫 번째 색이었던 주황색에서 연합 기억 수행이 다른 색보다 전반적으로 낮았다, 주황색(M = 81.05, SD = 6.99), 노란색(M = 83.63, SD = 6.50), 파란색(M = 87.11, SD = 6.03), 초록색(M = 84.77, SD = 5.94). 이에 따라 세 가지 색은 주황색을 제외하고 노란색[255, 192, 0], 파란색[90, 155, 213], 초록색[112, 173, 70]으로 설정하였다.목록 1과 2 각각의 물체 90개는 세 가지 색에 30개 씩 무작위로 할당되었다.


1.3 실험 설계와 절차


본 실험의 설계는 2(집단: 실험 집단, 통제 집단) × 3(예측 오류: 0%-PE 1, 50%-PE 2, 100%-PE 3)의 혼합 요인 설계로 구성되었다. 전체적인 절차와 과제는 다음의 사항을 제외하고 예비 실험과 동일하였다(그림 5). 첫째, 각 회기의 시간 간격은 24~48시간에서 약 24시간으로 고정되었다. 둘째, 각 목록에 할당되는 물체가 90개로 증가함에 따라, 각 과제의 시행도 90 시행(연합 학습 및 검사 과제, 재활성화 과제), 360 시행(출처 및 연합 기억 검사)으로 조정되었다. 셋째, 예측 오류의 조건은 예비 실험의 네 조건에서 세 조건으로 축소되었다.



1.4 통계 분석


모든 통계 분석은 R(R Core Team, 2019) 프로그램을 사용하여 수행하였다. 구체적인 분석 방법은 예비 실험과 유사하였다. 물체 목록의 연합 기억이 성공적으로 형성되었는지 확인하기 위해, 정확도와 반응시간을 분석하였다. 반응시간의 전처리 절차는 동일하다.


셋째 날의 출처 기억 반응은 동일하게 여러 종속 변인으로 구분되었다. 주요 종속 변인은 목록 1 정확반응(List 1 Correct, L1→D1), 목록 2 정확반응(List 2 Correct, L2→D2), (Source Confusion, L1→D2), 침범(Intrusion, L2→D1)의 네 가지이고, 이 외에 목록 3 정확반응(List 3 Correct, L3→New), 목록 3 오경보 1과 2(List 3 False Alarm - Day 1&2, L3→D1&2), 목록 1 & 2 누락(Miss, L1&2→New)을 측정하였다.


추가로, 본 실험의 두 번째 가설인 예측 오류의 비단조적 기억 갱신 효과 분석을 보완하기 위해 침범 반응에 대한 모형 적합을 수행하였다. 모형 적합은 R의 lme4 패키지를 활용하는 혼합 효과 모형(mixed effect model)을 구성하여 수행되었다(Bates, Mächler, Bolker, & Walker, 2015). 혼합 효과 모형은 참가자 또는 자극에 의한 변산이 측정된 자료에 미칠 수 있는 무선 효과를 실험 조건을 반영하는 고정 효과와 함께 한 가지 모형에서 동시에 고려할 수 있도록 해준다(Baayen, Davidson, & Bates, 2008). 침범 반응 비율이 예측 오류에 따라 선형적으로 증가하는지, 아니면 역U자 패턴을 따르는지 확인하기 위해, 결과 자료를 선형 관계를 가정한 모형(y = b0 + b1x1 + e)과 비선형 관계를 가정한 모형(y = b0 + b1x1 + b2x12 + e)에 적합하였다. 각 모형에는 예측 오류 조건의 고정 효과뿐만 아니라, 참가자에 의한 무선 절편이 무선 효과로 포함되었다. 두 모형은 우도 비율 검정(likelihood ratio test, LRT)과 AIC(akaike information criterion) 및 BIC(bayesian information criterion)와 같은 모형 비교 지표를 통해 비교되었다.


마지막으로 출처 반응의 분석 결과를 보완하기 위해 출처 기억 확신도를 분석하였다. 연합 기억이 셋째 날까지 잘 유지되었는지 확인하기 위해 각 집단, 물체 목록에서 연합 기억 정확도 및 확신도 또한 분석하였다. 모든 추론 통계 분석은 혼합 요인 분산 분석 및 Tukey의 쌍별 비교 사후 검정 방법을 통해 수행되었으며, 구형성 가정이 충족되지 않으면 교정된 자유도 상수를 사용하였다.







2 결과


2.1 목록 1, 목록 2의 연합 학습 수행


학습 및 검사 절차를 통해 물체-색 연합의 기억이 안정적으로 형성되었는지 확인하기 위해, 각 집단에서 연합 기억 정확도와 반응 시간의 변화를 블록 반복에 따라 분석하였다.

set_sum_contrasts()
p1 <- read.csv("MemUdt_PE_d1t2_m.csv", header = T) 
p2 <- read.csv("MemUdt_PE_d2t5_m.csv", header = T) 
p1$List <- 1; p2$List <- 2
p12 <- rbind(p1, p2)

p12$SN = factor(p12$SN); p12$Btw = factor(p12$Btw)
p12$List = factor(p12$List, levels = c(1,2), labels=c("List1", "List2"))
p12$Block = factor(p12$Block, levels=c(1,2,3,4), labels=c("b1","b2","b3","b4"))
p12$cCue = factor(p12$cCue, levels=c(1,2,3), labels=c("c1","c2","c3"))
p12$CueName = factor(p12$CueName, labels=c("c1","c2","c3"))
p12$RT <- p12$RT*1000; p12$Corr <- as.numeric(p12$Corr==1)
p12 <- p12 %>% select(SN, Btw, List, Trial, Block, bTrial, cCue, 
                      IMidx, IMname, CueName, Resp, RT, Corr)

glimpse(p12, width=70)
## Rows: 25,920
## Columns: 13
## $ SN      <fct> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ Btw     <fct> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ List    <fct> List1, List1, List1, List1, List1, List1, List1, Lis…
## $ Trial   <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1…
## $ Block   <fct> b1, b1, b1, b1, b1, b1, b1, b1, b1, b1, b1, b1, b1, …
## $ bTrial  <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1…
## $ cCue    <fct> c1, c1, c1, c2, c3, c1, c1, c3, c3, c2, c2, c2, c2, …
## $ IMidx   <int> 147, 56, 79, 100, 27, 142, 152, 93, 160, 87, 67, 159…
## $ IMname  <chr> " man245.jpg", " man092.jpg", " man123.jpg", " man15…
## $ CueName <fct> c1, c1, c1, c2, c3, c1, c1, c3, c3, c2, c2, c2, c2, …
## $ Resp    <int> 1, 2, 1, 2, 1, 1, 1, 7, 3, 2, 2, 2, 2, 1, 2, 2, 1, 3…
## $ RT      <dbl> 836.9, 1539.0, 1603.3, 1298.2, 1644.7, 1336.8, 1104.…
## $ Corr    <dbl> 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0…
# 1. SN: participant ID
# 2. Btw: between factor. 1-experimental group, 2-control group
# 3. List: study list. 1-List1, 2-List2
# 4. Trial: 1 ~ 360
# 5. Block: b1 ~ b4
# 6. bTrial: 1 ~ 90
# 7. cCue: association color cue condition. 1-c1, 2-c2, 3-c3
# 8. IMidx: index of stimuli
# 9. IMname: name of stimuli
# 10. CueName: name of color cue
# 11. Resp: association color cue response
# 12. RT: association color cue response time
# 13. Corr: color cue response correctness. 1-correct, 0-incorrect

length(unique(p12$SN))
## [1] 36
length(unique(p12$SN[p12$Btw==1]))
## [1] 18
length(unique(p12$SN[p12$Btw==2]))
## [1] 18
table(p12$List, p12$SN)
##        
##           1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18
##   List1 360 360 360 360 360 360 360 360 360 360 360 360 360 360 360 360 360 360
##   List2 360 360 360 360 360 360 360 360 360 360 360 360 360 360 360 360 360 360
##        
##          20  21  22  23  24  25  26  27  29  30  31  32  33  34  35  36  37  38
##   List1 360 360 360 360 360 360 360 360 360 360 360 360 360 360 360 360 360 360
##   List2 360 360 360 360 360 360 360 360 360 360 360 360 360 360 360 360 360 360



2.1.1 연합 학습 정확도 및 반응시간


2.1.1.1 정확도 (Accuracy)


연합 학습 검사 결과에서 집단과 목록, 블록 반복에 따른 정확도 평균과 표준편차를 계산하였다. 아래의 그래프에서 A는 목록 1, B는 목록 2를 나타내며, 각 모양의 점은 평균, 오차 막대는 95% 신뢰구간을 나타낸다. 점의 모양으로 두 집단이 구분되었다.

# phase 1, subject-level, long-format
p12.L.long.all <- p12 %>% group_by(SN, Btw, List, Block) %>% 
  dplyr::summarise(Accuracy = mean(Corr)*100) %>% ungroup()
p12.L.long.exp <- p12.L.long.all %>% filter(Btw == 1)
p12.L.long.con <- p12.L.long.all %>% filter(Btw == 2) 

# wide format, needed for geom_segments.
p12.L.swide.all <- p12.L.long.all %>% spread(key = Block, value = Accuracy)
p12.L.swide.exp <- p12.L.swide.all %>% filter(Btw == 1)
p12.L.swide.con <- p12.L.swide.all %>% filter(Btw == 2)

# summary table
p12.L.g.all <- p12.L.long.all %>% group_by(Btw, List, Block) %>%
  summarise(ACC.M = mean(Accuracy), SD = sd(Accuracy)) %>% ungroup()
p12.L.g.all$se <- Rmisc::summarySEwithin(data = p12.L.long.all, measurevar = "Accuracy", idvar = "SN", betweenvars ="Btw", withinvars = c("List","Block"))$se
p12.L.g.all$ci <- Rmisc::summarySEwithin(data = p12.L.long.all, measurevar = "Accuracy", idvar = "SN", betweenvars ="Btw", withinvars = c("List","Block"))$ci
p12.L.g.exp <- p12.L.g.all %>% filter(Btw == 1); p12.L.g.con <- p12.L.g.all %>% filter(Btw == 2)
p12.L.g.L1 <- p12.L.g.all %>% filter(List == "List1"); p12.L.g.L2 <- p12.L.g.all %>% filter(List == "List2")
p12.L.g.L1$Btw <- factor(p12.L.g.L1$Btw, labels=c("Experimental", "Control"))
p12.L.g.L2$Btw <- factor(p12.L.g.L2$Btw, labels=c("Experimental", "Control"))
# p12.L.g.all %>% kable(digit=2)

목록 1 정확도

p12.L.g.L1 %>% kable(digit=2)
Btw List Block ACC.M SD se ci
Experimental List1 b1 65.86 9.74 1.94 4.10
Experimental List1 b2 85.74 8.61 1.35 2.86
Experimental List1 b3 93.46 4.80 0.77 1.63
Experimental List1 b4 97.41 2.83 0.88 1.85
Control List1 b1 59.57 9.35 1.16 2.45
Control List1 b2 82.59 11.70 1.55 3.27
Control List1 b3 92.28 6.30 0.62 1.30
Control List1 b4 97.35 3.08 1.26 2.67

목록 2 정확도

p12.L.g.L2 %>% kable(digit=2)
Btw List Block ACC.M SD se ci
Experimental List2 b1 74.88 9.08 1.82 3.84
Experimental List2 b2 91.23 5.22 1.14 2.41
Experimental List2 b3 96.23 2.50 0.88 1.85
Experimental List2 b4 98.64 1.11 0.83 1.75
Control List2 b1 67.59 13.08 2.06 4.34
Control List2 b2 87.41 9.83 1.17 2.47
Control List2 b3 94.94 4.42 1.00 2.11
Control List2 b4 97.22 2.33 1.32 2.78

물체 목록에 따른 집단별 정확도 그래프

p12.L.g.L1.plot1 <- ggplot(data=p12.L.g.L1, 
                           aes(x=Block, y=ACC.M, ymin=ACC.M-ci, ymax=ACC.M+ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(20,100), clip = "on") +
  # scale_y_continuous(breaks = seq(0,80)) +
  scale_x_discrete(labels = c("1", "2", "3", "4")) +
  labs(x = "Block", y = "Accuracy (%)") +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.65, 0.35),
        legend.title = element_blank(),
        aspect.ratio = 1,
        legend.background = element_blank(),
        plot.margin = margin(1, 1, 1, 1, "cm"),
        legend.key = element_blank())

p12.L.g.L2.plot1 <- ggplot(data=p12.L.g.L2, 
                           aes(x=Block, y=ACC.M, ymin=ACC.M-ci, ymax=ACC.M+ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(20,100), clip = "on") +
  # scale_y_continuous(breaks = seq(0,80)) +
  scale_x_discrete(labels = c("1", "2", "3", "4")) +
  labs(x = "Block", y = "Accuracy (%)") +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.65, 0.35),
        legend.title = element_blank(),
        aspect.ratio = 1,
        legend.background = element_blank(),
        plot.margin = margin(1, 1, 1, 1, "cm"),
        legend.key = element_blank())

d12_asc_acc_Main<- ggpubr::ggarrange(p12.L.g.L1.plot1, p12.L.g.L2.plot1, nrow = 1, ncol=2, 
                                labels=c("A. List 1","B. List 2"),
                                hjust = -0.05, vjust=1, font.label = list(size = 20))
d12_asc_acc_Main


2.1.1.1.1 혼합 요인 분산 분석 - 전체 블록


두 집단의 물체 목록에 블록 반복에 따른 연합 기억 정확도 변화를 살펴보기 위해 참가자 간 변인인 집단과 참가자 내 변인인 목록 및 블록 반복을 요인으로 2 X 2 X 4 혼합 요인 분산분석을 수행하였다.

p12.L.long.all$Btw <- factor(p12.L.long.all$Btw, labels=c("Experimental", "Control"))
p12.acc.aov <- aov_ez(id = "SN", dv = "Accuracy", data = p12.L.long.all, 
                      between = "Btw", within = c("List","Block"))
# test_levene(p12.acc.aov)
# test_sphericity(p12.acc.aov)
anova(p12.acc.aov, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 228.153 2.961 0.080 0.094
List 1.000 34.000 34.788 37.140 0.522 0.000
Btw:List 1.000 34.000 34.788 0.321 0.009 0.575
Block 1.946 66.154 71.771 291.504 0.896 0.000
Btw:Block 1.946 66.154 71.771 2.940 0.080 0.061
List:Block 2.169 73.757 18.028 16.127 0.322 0.000
Btw:List:Block 2.169 73.757 18.028 0.094 0.003 0.923

분석 결과, 목록의 주효과, 블록 반복의 주효과, 목록과 블록 반복의 상호작용이 유의하였다.

p12.acc.m1 <- emmeans(p12.acc.aov, c("Block"), by = c("Btw","List"), type = "response")
p12.acc.m1.pair <- update(pairs(p12.acc.m1), by = "Btw", adjust = "tukey")
p12.acc.m1.pair %>% summary(infer = TRUE) %>% kable(digits=3)
contrast Btw List estimate SE df lower.CL upper.CL t.ratio p.value
b1 - b2 Experimental List1 -19.877 1.857 34 -25.565 -14.188 -10.704 0.000
b1 - b3 Experimental List1 -27.593 1.683 34 -32.749 -22.436 -16.390 0.000
b1 - b4 Experimental List1 -31.543 2.094 34 -37.958 -25.128 -15.061 0.000
b2 - b3 Experimental List1 -7.716 1.375 34 -11.926 -3.506 -5.614 0.000
b2 - b4 Experimental List1 -11.667 2.123 34 -18.169 -5.164 -5.496 0.000
b3 - b4 Experimental List1 -3.951 1.132 34 -7.417 -0.484 -3.491 0.016
b1 - b2 Control List1 -23.025 1.857 34 -28.713 -17.337 -12.399 0.000
b1 - b3 Control List1 -32.716 1.683 34 -37.873 -27.559 -19.433 0.000
b1 - b4 Control List1 -37.778 2.094 34 -44.193 -31.363 -18.038 0.000
b2 - b3 Control List1 -9.691 1.375 34 -13.902 -5.481 -7.051 0.000
b2 - b4 Control List1 -14.753 2.123 34 -21.256 -8.250 -6.949 0.000
b3 - b4 Control List1 -5.062 1.132 34 -8.528 -1.595 -4.473 0.001
b1 - b2 Experimental List2 -16.358 2.217 34 -23.148 -9.568 -7.379 0.000
b1 - b3 Experimental List2 -21.358 2.330 34 -28.495 -14.221 -9.166 0.000
b1 - b4 Experimental List2 -23.765 2.509 34 -31.450 -16.080 -9.473 0.000
b2 - b3 Experimental List2 -5.000 1.331 34 -9.076 -0.924 -3.758 0.008
b2 - b4 Experimental List2 -7.407 1.596 34 -12.296 -2.519 -4.642 0.001
b3 - b4 Experimental List2 -2.407 0.650 34 -4.398 -0.416 -3.704 0.009
b1 - b2 Control List2 -19.815 2.217 34 -26.605 -13.024 -8.938 0.000
b1 - b3 Control List2 -27.346 2.330 34 -34.483 -20.208 -11.736 0.000
b1 - b4 Control List2 -29.630 2.509 34 -37.315 -21.945 -11.810 0.000
b2 - b3 Control List2 -7.531 1.331 34 -11.606 -3.455 -5.660 0.000
b2 - b4 Control List2 -9.815 1.596 34 -14.703 -4.926 -6.150 0.000
b3 - b4 Control List2 -2.284 0.650 34 -4.275 -0.293 -3.514 0.015

집단과 목록에서 블록에 의한 차이를 사후 분석한 결과, 두 집단 모두 각 목록에서 블록 반복에 따라 정확도가 향상되었다.

# plot(p12.acc.m1, horizontal=F, comparisons=T) +
#   theme(panel.grid.major = element_blank(),
#         panel.grid.minor = element_blank())


2.1.1.1.2 혼합 요인 분산 분석 - 블록 4


두 집단의 물체 목록에서 마지막 블록의 연합 기억 정확도 변화를 살펴보기 위해 참가자 간 변인인 집단과 참가자 내 변인인 목록을 요인으로 2 X 2 혼합 요인 분산분석을 수행하였다.

p12.L.long.b4.all <- p12.L.long.all %>% filter(Block=="b4")
p12.b4.acc.aov <- aov_ez(id = "SN", dv = "Accuracy", data = p12.L.long.b4.all, 
                      between = "Btw", within = c("List"))
# test_levene(p12.b4.acc.aov)
# test_sphericity(p12.b4.acc.aov)
anova(p12.b4.acc.aov, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1 34 9.735 1.015 0.029 0.321
List 1 34 2.316 2.399 0.066 0.131
Btw:List 1 34 2.316 3.584 0.095 0.067

분석 결과, 모든 효과가 유의하지 않았다.

p12.b4.acc.m1 <- emmeans(p12.b4.acc.aov, c("List","Btw"), by = NULL, type = "response")
p12.b4.acc.m1.pair <- update(pairs(p12.b4.acc.m1), by = NULL, adjust = "tukey")
p12.b4.acc.m1.pair %>% summary(infer = TRUE) %>% kable(digits=3)
contrast estimate SE df lower.CL upper.CL t.ratio p.value
List1 Experimental - List2 Experimental -1.235 0.507 34 -2.605 0.135 -2.434 0.090
List1 Experimental - List1 Control 0.062 0.985 34 -2.597 2.721 0.063 1.000
List1 Experimental - List2 Control 0.185 0.818 34 -2.025 2.395 0.226 0.996
List2 Experimental - List1 Control 1.296 0.818 34 -0.914 3.506 1.584 0.401
List2 Experimental - List2 Control 1.420 0.608 34 -0.222 3.062 2.335 0.110
List1 Control - List2 Control 0.123 0.507 34 -1.247 1.493 0.243 0.995

사후 분석 결과, 실험 집단목록 2 정확도가 실험 집단목록 1, 통제 집단목록 1목록 2보다 수치적으로 우수하였으나 통계적으로 유의한 차이가 나타나지 않았다.

plot(p12.b4.acc.m1, horizontal=F, comparisons=T) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())


2.1.1.1.3 일반화 선형 혼합 모형; GLMM - 블록 4


분산 분석 결과를 보충하기 위해 블록 4의 연합 기억 정확도에 대하여 일반화 선형 혼합 모형(일반화 선형 혼합 모형; GLMM)을 검증하였다. 집단과 목록의 고정 효과(fixed effect)와 참가자와 자극 항목에 대한 무선 절편을 무선 효과(random effect)로 포함한 p12.b4.Acc.Model을 구성하였다.


p12.b4 <- p12 %>% filter(Block=="b4")
p12.b4$Block <- factor(p12.b4$Block)
p12.b4$Btw <- factor(p12.b4$Btw, labels=c("Experimental", "Control"))


(nc <- detectCores())
cl <- makeCluster(rep("localhost", nc))

p12.b4.Acc.Model.1 <- afex::mixed(Corr ~ Btw*List + (1|SN) + (1|IMname), 
                           p12.b4, method = "LRT", cl = cl, 
                           family=binomial(link="logit"),
                           control = glmerControl(optCtrl = list(maxfun = 1e6)))

save(p12.b4.Acc.Model.1, file="L1&2b4_Acc_afex.Rdata")

stopCluster(cl)
anova(p12.b4.Acc.Model.1) %>% kable(digits=3)

분석 결과, 집단과 목록의 상호작용이 유의하였다.

p12.b4.acc.m2 <- emmeans(p12.b4.Acc.Model.1, c("List","Btw"), by = NULL, type = "response")
p12.b4.acc.m2.pair <- update(pairs(p12.b4.acc.m2), by = NULL, adjust = "tukey")
p12.b4.acc.m2.pair %>% summary(infer = TRUE) %>% kable(digits=3)

사후 분석 결과, 분산 분석과 같이 실험 집단목록 2 정확도가 실험 집단목록 1, 통제 집단목록 1목록 2보다 수치적으로 우수하였으나 통계적으로 유의한 차이가 나타나지 않았다.

plot(p12.b4.acc.m2, horizontal=F, comparisons=T) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())


2.1.1.2 반응시간 (Response Time)


연합 기억 수행의 반응시간을 분석하였다.

p12.acc.trial <- p12 %>% group_by(SN) %>% 
  summarise(Accuracy = mean(Corr)*100) %>% 
  ungroup() %>% summarise(M = mean(Accuracy), SD = sd(Accuracy))

cp12.all <- p12 %>% filter(Corr==1)

sp12.all <- cp12.all %>% filter(RT > 150) %>% 
  group_by(SN) %>% 
  nest() %>% 
  mutate(lbound = map(data, ~mean(.$RT)-3*sd(.$RT)),
         ubound = map(data, ~mean(.$RT)+3*sd(.$RT))) %>% 
  unnest(c(lbound, ubound)) %>% 
  unnest(data) %>% 
  ungroup() %>% 
  mutate(Outlier = (RT < lbound)|(RT > ubound)) %>% 
  filter(Outlier == FALSE) %>% 
  select(SN, Btw, List, Block, cCue, CueName, Resp, RT, Corr, IMname)

100 - 100*nrow(sp12.all)/nrow(cp12.all)
## [1] 2.174593
## [1] 2.174593

연합 기억 검사에서 정확하게 반응한 시행(M = 86.4%, SD = 5.49%)의 반응 시간 자료만 분석하였다. 가외치 제거 결과, 정확반응 시행의 반응시간 자료에서 2.17%가 제거되었다.

sp12.all %>% group_by(SN, Btw, Block) %>% 
  summarise(NumTrial = length(RT)) %>% 
  ungroup %>% 
  group_by(Btw, Block) %>%
  summarise(Avg = mean(NumTrial), 
            Med = median(NumTrial), 
            Min = min(NumTrial), 
            Max = max(NumTrial)) %>% 
  ungroup %>% kable(digit=2)
Btw Block Avg Med Min Max
1 b1 120.67 124.0 92 139
1 b2 155.33 155.0 132 172
1 b3 168.50 169.0 157 176
1 b4 175.33 177.0 166 180
2 b1 108.17 110.0 81 141
2 b2 150.50 154.5 104 173
2 b3 166.00 166.0 142 176
2 b4 172.61 173.0 153 180
dens1 <- ggplot(cp12.all, aes(x=RT)) +
  geom_density() +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        axis.text.y = element_blank(),
        axis.ticks.y = element_blank())

dens2 <- ggplot(sp12.all, aes(x=RT)) +
  geom_density() +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        axis.text.y = element_blank(),
        axis.ticks.y = element_blank())
dens1 + dens2


집단과 목록, 블록 반복에 따른 반응시간 평균과 표준편차를 계산하였다. 두 집단 모두에서 블록 진행에 따라 연합 기억 검사의 반응시간이 향상되었다. 아래의 그래프에서 A는 목록 1, B는 목록 2를 나타내며, 각 모양의 점은 평균, 오차 막대는 95% 신뢰구간을 나타낸다. 점의 모양으로 두 집단이 구분되었다.

# long format
p12.L.rt.long.all <- sp12.all %>% group_by(SN, Btw, List, Block) %>% 
  summarise(RT = mean(RT)) %>% 
  ungroup()
p12.L.rt.long.exp <- p12.L.rt.long.all %>% filter(Btw==1)
p12.L.rt.long.con <- p12.L.rt.long.all %>% filter(Btw==2)

# wide format
p12.L.rt.swide.all <- p12.L.rt.long.all %>% spread(key = Block, value = RT)
p12.L.rt.swide.exp <- p12.L.rt.swide.all %>% filter(Btw==1)
p12.L.rt.swide.con <- p12.L.rt.swide.all %>% filter(Btw==2)

# summary table
p12.L.rt.g.all <- p12.L.rt.long.all %>% group_by(Btw, List, Block) %>%
  summarise(RT.M = mean(RT), SD = sd(RT)) %>% ungroup()
p12.L.rt.g.all$se <- Rmisc::summarySEwithin(data = p12.L.rt.long.all, measurevar = "RT", 
                                           idvar = "SN", betweenvars = "Btw", withinvars = c("List","Block"))$se
p12.L.rt.g.all$ci <- Rmisc::summarySEwithin(data = p12.L.rt.long.all, measurevar = "RT", 
                                           idvar = "SN", betweenvars = "Btw", withinvars = c("List","Block"))$ci
p12.L.rt.g.all$Btw <- factor(p12.L.rt.g.all$Btw, labels=c("Experimental", "Control"))
p12.L.rt.g.L1 <- p12.L.rt.g.all %>% filter(List == "List1")
p12.L.rt.g.L2 <- p12.L.rt.g.all %>% filter(List == "List2")
# p12.L.rt.g.all %>% kable(digit=2)

목록 1 반응시간

p12.L.rt.g.L1 %>% kable(digits=2)
Btw List Block RT.M SD se ci
Experimental List1 b1 798.36 146.75 26.96 56.89
Experimental List1 b2 630.75 145.81 24.32 51.31
Experimental List1 b3 518.71 114.90 16.99 35.84
Experimental List1 b4 460.25 104.89 17.28 36.47
Control List1 b1 742.32 140.43 30.58 64.53
Control List1 b2 607.87 147.11 25.81 54.45
Control List1 b3 525.47 143.88 25.72 54.26
Control List1 b4 467.58 105.57 15.83 33.39

목록 2 반응시간

p12.L.rt.g.L2 %>% kable(digits=2)
Btw List Block RT.M SD se ci
Experimental List2 b1 752.95 100.39 23.77 50.15
Experimental List2 b2 568.68 109.87 20.53 43.31
Experimental List2 b3 479.64 111.37 22.72 47.94
Experimental List2 b4 470.50 90.17 21.28 44.90
Control List2 b1 738.26 182.86 28.79 60.74
Control List2 b2 575.84 164.23 23.84 50.30
Control List2 b3 483.41 152.46 28.30 59.71
Control List2 b4 459.82 115.93 21.47 45.29

물체 목록에 따른 집단별 반응시간 그래프

p12.L.rt.g.L1.plot1 <- ggplot(data=p12.L.rt.g.L1 , 
                              aes(x=Block, y=RT.M, ymin=RT.M-ci, ymax=RT.M+ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(0,1800), clip = "on") +
  # scale_y_continuous(breaks = seq(0,80)) +
  scale_x_discrete(labels = c("1", "2", "3", "4")) +
  labs(x = "Block", y = "Response Time (ms)") +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.65, 0.85),
        legend.title = element_blank(),
        aspect.ratio = 1,
        legend.background = element_blank(),
        plot.margin = margin(1, 1, 1, 1, "cm"),
        legend.key = element_blank())

p12.L.rt.g.L2.plot1 <- ggplot(data=p12.L.rt.g.L2 , 
                              aes(x=Block, y=RT.M, ymin=RT.M-ci, ymax=RT.M+ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(0,1800), clip = "on") +
  # scale_y_continuous(breaks = seq(0,80)) +
  scale_x_discrete(labels = c("1", "2", "3", "4")) +
  labs(x = "Block", y = "Response Time (ms)") +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.65, 0.85),
        legend.title = element_blank(),
        aspect.ratio = 1,
        legend.background = element_blank(),
        plot.margin = margin(1, 1, 1, 1, "cm"),
        legend.key = element_blank())

d12_asc_rt_Main<- ggpubr::ggarrange(p12.L.rt.g.L1.plot1, p12.L.rt.g.L2.plot1, nrow = 1, ncol=2, 
                                labels=c("A. List 1","B. List 2"),
                                hjust = -0.05, vjust=1, font.label = list(size = 20))
d12_asc_rt_Main


2.1.1.2.1 혼합 요인 분산 분석 - 전체 블록


두 집단의 물체 목록에 블록 반복에 따른 연합 기억 반응시간 변화를 살펴보기 위해 참가자 간 변인인 집단과 참가자 내 변인인 목록 및 블록 반복을 요인으로 2 X 2 X 4 혼합 요인 분산분석을 수행하였다.

p12.L.rt.long.all$Btw <- factor(p12.L.rt.long.all$Btw, labels=c("Experimental", "Control"))
p12.rt.aov <- aov_ez(id = "SN", dv = "RT", data = p12.L.rt.long.all, between = "Btw", within = c("List","Block"))
# test_levene(p12.rt.aov)
# test_sphericity(p12.rt.aov)
anova(p12.rt.aov, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 68854.735 0.103 0.003 0.751
List 1.000 34.000 46945.987 1.183 0.034 0.284
Btw:List 1.000 34.000 46945.987 0.061 0.002 0.807
Block 1.973 67.073 5958.685 314.635 0.902 0.000
Btw:Block 1.973 67.073 5958.685 1.455 0.041 0.241
List:Block 1.916 65.145 6491.398 2.007 0.056 0.145
Btw:List:Block 1.916 65.145 6491.398 0.836 0.024 0.434

분석 결과, 블록 반복의 주효과가 유의하였다.

p12.rt.m1 <- emmeans(p12.rt.aov, c("Block"), by = c("Btw","List"), type = "response")
p12.rt.m1.pair <- update(pairs(p12.rt.m1), by = "Btw", adjust = "tukey")
p12.rt.m1.pair %>% summary(infer = TRUE) %>% kable(digits=3)
contrast Btw List estimate SE df lower.CL upper.CL t.ratio p.value
b1 - b2 Experimental List1 167.604 18.044 34 112.332 222.875 9.288 0.000
b1 - b3 Experimental List1 279.650 23.700 34 207.054 352.246 11.800 0.000
b1 - b4 Experimental List1 338.103 25.677 34 259.451 416.754 13.168 0.000
b2 - b3 Experimental List1 112.046 16.671 34 60.981 163.112 6.721 0.000
b2 - b4 Experimental List1 170.499 21.058 34 105.996 235.001 8.097 0.000
b3 - b4 Experimental List1 58.453 15.779 34 10.121 106.784 3.705 0.009
b1 - b2 Control List1 134.446 18.044 34 79.174 189.717 7.451 0.000
b1 - b3 Control List1 216.842 23.700 34 144.246 289.438 9.149 0.000
b1 - b4 Control List1 274.736 25.677 34 196.085 353.387 10.700 0.000
b2 - b3 Control List1 82.396 16.671 34 31.331 133.461 4.942 0.000
b2 - b4 Control List1 140.290 21.058 34 75.788 204.792 6.662 0.000
b3 - b4 Control List1 57.894 15.779 34 9.562 106.225 3.669 0.010
b1 - b2 Experimental List2 184.264 20.164 34 122.499 246.029 9.138 0.000
b1 - b3 Experimental List2 273.308 27.849 34 188.004 358.613 9.814 0.000
b1 - b4 Experimental List2 282.446 29.221 34 192.937 371.954 9.666 0.000
b2 - b3 Experimental List2 89.044 15.779 34 40.713 137.376 5.643 0.000
b2 - b4 Experimental List2 98.182 19.761 34 37.651 158.713 4.968 0.000
b3 - b4 Experimental List2 9.137 13.553 34 -32.376 50.651 0.674 1.000
b1 - b2 Control List2 162.424 20.164 34 100.659 224.189 8.055 0.000
b1 - b3 Control List2 254.850 27.849 34 169.545 340.154 9.151 0.000
b1 - b4 Control List2 278.441 29.221 34 188.932 367.949 9.529 0.000
b2 - b3 Control List2 92.426 15.779 34 44.094 140.757 5.858 0.000
b2 - b4 Control List2 116.017 19.761 34 55.485 176.548 5.871 0.000
b3 - b4 Control List2 23.591 13.553 34 -17.922 65.104 1.741 0.681

집단과 목록에서 블록에 의한 차이를 사후 분석한 결과, 두 집단 모두 각 목록에서 블록 반복에 따라 정확도가 향상되었다.

plot(p12.rt.m1, horizontal=F, comparisons=T) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())

사후 분석 결과, 두 집단 모두 각 목록에서 반복에 따라 반응속도가 향상되었다.


2.1.1.2.2 혼합 요인 분산 분석 - 블록 4


두 집단의 물체 목록에서 마지막 블록의 연합 기억 반응시간 변화를 살펴보기 위해 참가자 간 변인인 집단과 참가자 내 변인인 목록을 요인으로 2 X 2 혼합 요인 분산분석을 수행하였다.

p12.L.rt.long.b4.all <- p12.L.rt.long.all %>% filter(Block=="b4")
p12.b4.rt.aov <- aov_ez(id = "SN", dv = "RT", data = p12.L.rt.long.b4.all, 
                      between = "Btw", within = c("List"))
# test_levene(p12.b4.rt.aov)
# test_sphericity(p12.b4.rt.aov)
anova(p12.b4.rt.aov, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1 34 13482.011 0.004 0.000 0.951
List 1 34 8377.378 0.003 0.000 0.954
Btw:List 1 34 8377.378 0.174 0.005 0.679

분석 결과, 모든 효과가 유의하지 않았다.

p12.b4.rt.m1 <- emmeans(p12.b4.rt.aov, c("List","Btw"), by = NULL, type = "response")
p12.b4.rt.m1.pair <- update(pairs(p12.b4.rt.m1), by = NULL, adjust = "tukey")
p12.b4.rt.m1.pair %>% summary(infer = TRUE) %>% kable(digits=3)
contrast estimate SE df lower.CL upper.CL t.ratio p.value
List1 Experimental - List2 Experimental -10.248 30.509 34 -92.648 72.151 -0.336 0.987
List1 Experimental - List1 Control -7.325 35.077 34 -102.061 87.411 -0.209 0.997
List1 Experimental - List2 Control 0.435 34.848 34 -93.684 94.554 0.012 1.000
List2 Experimental - List1 Control 2.923 34.848 34 -91.195 97.042 0.084 1.000
List2 Experimental - List2 Control 10.684 34.618 34 -82.814 104.181 0.309 0.990
List1 Control - List2 Control 7.760 30.509 34 -74.639 90.160 0.254 0.994

사후 분석 결과, 모든 비교에서 통계적으로 유의한 차이가 나타나지 않았다.

plot(p12.b4.rt.m1, horizontal=F, comparisons=T) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())


2.1.1.2.3 일반화 선형 혼합 모형; GLMM - 블록 4


분산 분석 결과를 보충하기 위해 블록 4의 연합 기억 반응시간에 대하여 일반화 선형 혼합 모형(일반화 선형 혼합 모형; GLMM)을 검증하였다. 편포를 보이는 반응시간 분포를 고려하여 반응시간 분포에 적합한 inverse Gaussian distribution과 RT와 predictors 간의 linear relationship(identity link function)을 가정한 일반화 선형 혼합 모형 p12.b4.RT.Model을 구성하였다(Lo & Andrews, 2015). 집단과 목록의 고정 효과(fixed effect)와 참가자와 자극 항목에 대한 무선 절편을 무선 효과(random effect)로 포함하였다.


p12.b4.rt <- sp12.all %>% filter(Block=="b4")
p12.b4.rt$Block <- factor(p12.b4.rt$Block)
p12.b4.rt$Btw <- factor(p12.b4.rt$Btw, labels=c("Experimental", "Control"))


(nc <- detectCores())
cl <- makeCluster(rep("localhost", nc))

p12.b4.RT.Model.1 <- afex::mixed(RT ~ Btw*List + (1|SN) + (1|IMname), 
                           p12.b4.rt, method = "LRT", cl = cl, expand_re=T, 
                           family=inverse.gaussian(link="identity"),
                           control = glmerControl(optimizer = "bobyqa", 
                                                  optCtrl = list(maxfun = 1e6)))

save(p12.b4.RT.Model.1, file="L1&2b4_RT_afex.Rdata")

stopCluster(cl)
anova(p12.b4.RT.Model.1) %>% kable(digits=3)

분석 결과, 목록의 주효과, 집단과 목록의 상호작용이 유의하였다.

p12.b4.rt.m2 <- emmeans(p12.b4.RT.Model.1, c("List","Btw"), by = NULL, type = "response")
p12.b4.rt.m2.pair <- update(pairs(p12.b4.rt.m2), by = NULL, adjust = "tukey")
p12.b4.rt.m2.pair %>% summary(infer = TRUE) %>% kable(digits=3)

사후 분석 결과, 실험 집단목록 2 반응시간이 목록 1보다 우수한 것으로 나타났다.

plot(p12.b4.rt.m2, horizontal=F, comparisons=T) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())


목록 1 연합 기억 검사의 정확도와 반응시간을 집단별로 함께 나타난 그래프는 아래와 같다.

2.1.1.3 목록 1 & 2의 연합 학습 수행 그래프

연합 학습 수행 검사의 정확도와 반응시간을 목록별로 함께 나타난 그래프는 아래와 같다.

p12.L.g.L1.plot1 <- ggplot(data=p12.L.g.L1, 
                           aes(x=Block, y=ACC.M, ymin=ACC.M-ci, ymax=ACC.M+ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(20,100), clip = "on") +
  # scale_y_continuous(breaks = seq(0,80)) +
  scale_x_discrete(labels = c("1", "2", "3", "4")) +
  labs(x = "Block", y = "Accuracy (%)") +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.65, 0.35),
        legend.title = element_blank(),
        aspect.ratio = 0.6,
        legend.background = element_blank(),
        plot.margin = margin(0.3, 0.3, 0.3, 0.3, "cm"),
        legend.key = element_blank())

p12.L.g.L2.plot1 <- ggplot(data=p12.L.g.L2, 
                           aes(x=Block, y=ACC.M, ymin=ACC.M-ci, ymax=ACC.M+ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(20,100), clip = "on") +
  # scale_y_continuous(breaks = seq(0,80)) +
  scale_x_discrete(labels = c("1", "2", "3", "4")) +
  labs(x = "Block", y = "Accuracy (%)") +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.65, 0.35),
        legend.title = element_blank(),
        aspect.ratio = 0.6,
        legend.background = element_blank(),
        plot.margin = margin(0.3, 0.3, 0.3, 0.3, "cm"),
        legend.key = element_blank())

p12.L.rt.g.L1.plot1 <- ggplot(data=p12.L.rt.g.L1 , 
                              aes(x=Block, y=RT.M, ymin=RT.M-ci, ymax=RT.M+ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(0,1800), clip = "on") +
  # scale_y_continuous(breaks = seq(0,80)) +
  scale_x_discrete(labels = c("1", "2", "3", "4")) +
  labs(x = "Block", y = "Response Time (ms)") +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.65, 0.85),
        legend.title = element_blank(),
        aspect.ratio = 0.6,
        legend.background = element_blank(),
        plot.margin = margin(0.3, 0.3, 0.3, 0.3, "cm"),
        legend.key = element_blank())

p12.L.rt.g.L2.plot1 <- ggplot(data=p12.L.rt.g.L2 , 
                              aes(x=Block, y=RT.M, ymin=RT.M-ci, ymax=RT.M+ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(0,1800), clip = "on") +
  # scale_y_continuous(breaks = seq(0,80)) +
  scale_x_discrete(labels = c("1", "2", "3", "4")) +
  labs(x = "Block", y = "Response Time (ms)") +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.65, 0.85),
        legend.title = element_blank(),
        aspect.ratio = 0.6,
        legend.background = element_blank(),
        plot.margin = margin(0.3, 0.3, 0.3, 0.3, "cm"),
        legend.key = element_blank())


d12_asc_all_Main<- ggpubr::ggarrange(p12.L.g.L1.plot1, p12.L.g.L2.plot1, p12.L.rt.g.L1.plot1, p12.L.rt.g.L2.plot1, 
                             nrow = 2, ncol=2, labels=c("A. List 1","B. List 2"," "," "),
                             hjust = -0.05, vjust=1, font.label = list(size = 20))
d12_asc_all_Main

# ggsave("d12_asc_all_Main.jpg", plot = d12_asc_all_Main, width=8, height=6, unit='in', dpi=600)




2.2 Day 3 출처 기억 및 연합 기억 검사


## load data
p3 <- read.csv("MemUdt_PE_d3t6_m.csv", header = T) 
p3$SN = factor(p3$SN); p3$Btw = factor(p3$Btw)
p3$cSrc = factor(p3$cSrc, levels=c(1,2,3),  labels=c("List_1","List_2","List_3"))
p3$cCue = factor(p3$cCue, levels=c(1,2,3,0), labels=c("cc1","cc2","cc3","cc0"))
p3$cPE = factor(p3$cPE, levels=c(1,2,3,0), labels=c("pe1","pe2","pe3","pe0"))
p3$CueName = factor(p3$CueName, labels=c("c0","c1","c2","c3"))
p3$Resp <- factor(p3$Resp, levels=c(1,2,3), labels=c("Day_1", "Day_2", "New"))
p3$Correct <- as.numeric(p3$Corr==1); p3$Int <- as.numeric(p3$Corr==3); 
p3$Err <- as.numeric(p3$Corr==2); p3$sErr <- as.numeric(p3$Corr==3 | p3$Corr==2); 
p3$Incorr <- as.numeric(p3$Corr==0); p3$aCorr <- as.numeric(p3$aCorr==1);
p3 <- p3 %>% unite(cSrc_Resp, c(cSrc,Resp), remove=FALSE) %>% rename(tRsp = "cSrc_Resp")
p3$tRsp[p3$tRsp=='List_1_Day_1'] <- 'List 1 Correct'
p3$tRsp[p3$tRsp=='List_2_Day_2'] <- 'List 2 Correct'
p3$tRsp[p3$tRsp=='List_1_Day_2'] <- 'Source Confusion'
p3$tRsp[p3$tRsp=='List_2_Day_1'] <- 'Intrusion'
p3$tRsp[p3$tRsp=='List_1_New'] <- 'List 1 Miss'
p3$tRsp[p3$tRsp=='List_2_New'] <- 'List 2 Miss'
p3$tRsp[p3$tRsp=='List_3_New'] <- 'List 3 Correct'
p3$tRsp[p3$tRsp=='List_3_Day_1'] <- 'List 3 FA - Day 1'
p3$tRsp[p3$tRsp=='List_3_Day_2'] <- 'List 3 FA - Day 2'
p3$tRsp <- factor(p3$tRsp, levels=c('List 1 Correct', 'List 2 Correct', 'Source Confusion',
                                    'Intrusion', 'List 1 Miss', 'List 2 Miss',
                                    'List 3 Correct', 'List 3 FA - Day 1', 'List 3 FA - Day 2'))
p3 <- p3 %>% select(SN, Btw, Trial, tRsp, cSrc, cCue, cPE, IMname, Resp, Corr, Conf, 
                    aResp, aCorr, aConf, Correct, Int, Err, Incorr)

glimpse(p3, width = 70)
## Rows: 9,720
## Columns: 18
## $ SN      <fct> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ Btw     <fct> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ Trial   <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 1…
## $ tRsp    <fct> List 3 Correct, List 1 Correct, List 1 Correct, List…
## $ cSrc    <fct> List_3, List_1, List_1, List_2, List_1, List_3, List…
## $ cCue    <fct> cc0, cc2, cc2, cc2, cc2, cc0, cc3, cc3, cc2, cc3, cc…
## $ cPE     <fct> pe0, pe2, pe2, pe2, pe2, pe0, pe1, pe1, pe2, pe1, pe…
## $ IMname  <chr> " man114.jpg", " man066.jpg", " man133.jpg", " man14…
## $ Resp    <fct> New, Day_1, Day_1, Day_2, Day_1, New, Day_2, Day_2, …
## $ Corr    <int> 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 3, 1…
## $ Conf    <int> 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 3, 4, 4, 4…
## $ aResp   <int> 7, 2, 2, 2, 2, 7, 3, 1, 2, 3, 7, 2, 2, 1, 1, 7, 1, 7…
## $ aCorr   <dbl> 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0…
## $ aConf   <int> 7, 4, 4, 4, 4, 7, 4, 4, 4, 4, 7, 4, 4, 4, 4, 7, 4, 7…
## $ Correct <dbl> 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1…
## $ Int     <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0…
## $ Err     <dbl> 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0…
## $ Incorr  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
# 1. SN: participant ID
# 2. Btw: between-participants factor. 1-experimental group, 2-control group
# 3. Trial: 1 ~ 360
# 4. tRsp: type of source response
# 5. cSrc: learning source of stimuli. List_1 - day1, List_2 - day2, New - lure
# 6. cCue: association color cue condition. cc1 - cue 1, cc2 - cue 2, cc3 - cue 3, cc0 - lure
# 7. cPE: prediction error condition. pe1 - 0%, pe2 - 50%, pe3 - 100%, pe0 - no pe/lure
# 8. IMname: name of stimuli
# 9. Resp: source response (learning day/list)
# 10. Corr: source response type. 1-correct, 2-source confusion, 3-intrusion, 0-incorrect
# 11. Conf: source response confidence. 1-4
# 12. aResp: association response
# 13. aCorr: correctness of association response 
# 14. aConf: association response confidence. 1-4
# 15. Correct: correct response of source memory (List1>D1, List2>D2, List3>new)
# 16. Int: intrusion response of source memory (List2>D1)
# 17. err: source confusion response of source memory (List1>D2)
# 18. Incorr: incorrect response of source memory (List1&2>new, List3>day1&2)

length(unique(p3$SN))
## [1] 36
length(unique(p3$SN[p3$Btw==1])) # the number of participants of experimental group
## [1] 18
length(unique(p3$SN[p3$Btw==2])) # the number of participants of control group
## [1] 18
table(p3$SN)
## 
##   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  20  21 
## 270 270 270 270 270 270 270 270 270 270 270 270 270 270 270 270 270 270 270 270 
##  22  23  24  25  26  27  29  30  31  32  33  34  35  36  37  38 
## 270 270 270 270 270 270 270 270 270 270 270 270 270 270 270 270



2.2.1 Day 3 출처 기억 반응 분석


셋째 날 출처 및 연합 기억 검사에서 물체 목록에 대한 출처 기억 반응 패턴을 분석하였다. 출처 반응은 주요 종속 변인인 목록 1 정확반응 (List 1 Correct, L1→D1), 목록 2 정확반응 (List 2 Correct, L2→D2), 출처 혼동 (Source Confusion, L1→D2), 침범 (Intrusion, L2→D1) 과 부차적인 변인인 목록 3 정확반응 (List 3 Correct, L3→New), 목록 3 오경보 1과 2 (List 3 False Alarm - Day 1&2, L3→D1&2), 목록 1 & 2 누락 (Miss, L1&2→New)으로 구분되어 분석되었다.


2.2.1.1 출처 반응의 기술통계


두 집단의 물체 목록에 따른 출처 반응 패턴을 표로 나타내었다. List 3 Correct, List 3 False Alarm, List 1&2 Miss는 두 집단 모두에서 천장 효과와 바닥 효과를 보였다. 따라서 이 반응들은 분석에 포함하지 않았다.

# phase 1, subject-level, long-format
p3.AsyPtt.long.all <- p3 %>%  group_by(SN, Btw, cSrc, Resp) %>%
  summarise(Rsp = length(Resp)/90*100) %>% ungroup()
p3.AsyPtt.wide.all <- p3.AsyPtt.long.all %>% spread(key = Resp, value = Rsp)
p3.AsyPtt.long.all <- gather(p3.AsyPtt.wide.all, Resp, Rsp, Day_1:New, factor_key=TRUE)
p3.AsyPtt.long.all[is.na(p3.AsyPtt.long.all)] <- 0 
p3.AsyPtt.long.all <- arrange(p3.AsyPtt.long.all, SN, cSrc, Resp, Rsp)
p3.AsyPtt.long.exp <- p3.AsyPtt.long.all %>% filter(Btw==1)
p3.AsyPtt.long.con <- p3.AsyPtt.long.all %>% filter(Btw==2)

# wide format
p3.AsyPtt.swide.all <- p3.AsyPtt.long.all %>% spread(key = Resp, value = Rsp)
p3.AsyPtt.swide.exp <- p3.AsyPtt.swide.all %>% filter(Btw==1)
p3.AsyPtt.swide.con <- p3.AsyPtt.swide.all %>% filter(Btw==2)

# summary table
p3.AsyPtt.g.all <- p3.AsyPtt.long.all %>% group_by(Btw, cSrc, Resp) %>%
  summarise(Rsp.M = mean(Rsp), Rsp.SD = sd(Rsp)) %>% ungroup()
p3.AsyPtt.g.all$Rsp.se <- Rmisc::summarySEwithin(data = p3.AsyPtt.long.all, measurevar = "Rsp", idvar = "SN", 
                                                 betweenvars = "Btw", withinvars = c("cSrc","Resp"))$se
p3.AsyPtt.g.all$Rsp.ci <- Rmisc::summarySEwithin(data = p3.AsyPtt.long.all, measurevar = "Rsp", idvar = "SN", 
                                                 betweenvars = "Btw", withinvars = c("cSrc","Resp"))$ci
p3.AsyPtt.g.exp <- p3.AsyPtt.g.all %>% filter(Btw==1)
p3.AsyPtt.g.con <- p3.AsyPtt.g.all %>% filter(Btw==2)

p3.AsyPtt.g.table <- p3.AsyPtt.g.all %>% unite(cSrc_Resp, cSrc:Resp, remove=TRUE) %>% rename(Src_Resp = "cSrc_Resp")
p3.AsyPtt.g.table$Src_Resp[p3.AsyPtt.g.table$Src_Resp=='List_1_Day_1'] <- 'List 1 Correct'
p3.AsyPtt.g.table$Src_Resp[p3.AsyPtt.g.table$Src_Resp=='List_2_Day_2'] <- 'List 2 Correct'
p3.AsyPtt.g.table$Src_Resp[p3.AsyPtt.g.table$Src_Resp=='List_1_Day_2'] <- 'Source Confusion'
p3.AsyPtt.g.table$Src_Resp[p3.AsyPtt.g.table$Src_Resp=='List_2_Day_1'] <- 'Intrusion'
p3.AsyPtt.g.table$Src_Resp[p3.AsyPtt.g.table$Src_Resp=='List_1_New'] <- 'List 1 Miss'
p3.AsyPtt.g.table$Src_Resp[p3.AsyPtt.g.table$Src_Resp=='List_2_New'] <- 'List 2 Miss'
p3.AsyPtt.g.table$Src_Resp[p3.AsyPtt.g.table$Src_Resp=='List_3_New'] <- 'List 3 Correct'
p3.AsyPtt.g.table$Src_Resp[p3.AsyPtt.g.table$Src_Resp=='List_3_Day_1'] <- 'List 3 FA - Day 1'
p3.AsyPtt.g.table$Src_Resp[p3.AsyPtt.g.table$Src_Resp=='List_3_Day_2'] <- 'List 3 FA - Day 2'
srt <- c(1, 3, 5, 4, 2, 6, 8, 9, 7)
p3.AsyPtt.g.table.1 <- p3.AsyPtt.g.table %>% filter(Btw == 1) %>% arrange(srt)
p3.AsyPtt.g.table.2 <- p3.AsyPtt.g.table %>% filter(Btw == 2) %>% arrange(srt)
p3.AsyPtt.g.table.all <- rbind(p3.AsyPtt.g.table.1, p3.AsyPtt.g.table.2)
p3.AsyPtt.g.table.all$Btw <- factor(p3.AsyPtt.g.table.all$Btw, levels = c(1,2), labels=c("Experimental", "Control"))
p3.AsyPtt.g.table.all %>% kable(digits=2)
Btw Src_Resp Rsp.M Rsp.SD Rsp.se Rsp.ci
Experimental List 1 Correct 75.43 10.13 2.53 5.34
Experimental List 2 Correct 66.05 12.50 3.13 6.59
Experimental Source Confusion 21.30 8.51 2.13 4.49
Experimental Intrusion 31.73 11.74 2.93 6.19
Experimental List 1 Miss 3.27 3.78 0.95 1.99
Experimental List 2 Miss 2.22 2.44 0.61 1.29
Experimental List 3 Correct 97.28 3.52 0.88 1.86
Experimental List 3 FA - Day 1 1.98 3.16 0.79 1.66
Experimental List 3 FA - Day 2 0.74 1.01 0.25 0.53
Control List 1 Correct 71.42 9.68 2.42 5.10
Control List 2 Correct 70.62 10.19 2.55 5.37
Control Source Confusion 23.95 8.68 2.17 4.58
Control Intrusion 25.80 8.99 2.25 4.74
Control List 1 Miss 4.63 3.39 0.85 1.79
Control List 2 Miss 3.58 2.89 0.72 1.53
Control List 3 Correct 95.62 6.94 1.73 3.66
Control List 3 FA - Day 1 2.28 3.84 0.96 2.02
Control List 3 FA - Day 2 2.10 5.28 1.32 2.78


2.2.1.2 출처 반응의 비대칭적 패턴


두 집단의 물체 목록에 따른 출처 반응 패턴을 그래프로 나타내었다. 그래프에서 A는 전체 집단의 물체 목록에 따른 출처 반응, B는 실험 집단, C는 통제집단을 나타낸다. A 그래프에서 x축은 물체 목록에 따른 출처 반응, y축은 반응 비율을 나타내며, 색은 각 집단을 나타낸다. B,C 그래프의 x축은 각 학습일에 학습한 물체 목록(첫째 날 학습 목록 1, 둘째 날 학습 목록 2, 새로운 물체 목록 3)을 나타내며, y축은 반응의 비율을 나타낸다. 각 집단에서 해당 물체 목록에 대한 출처 귀인 반응을 첫째 날 학습 Day 1, 둘째 날 학습 Day 2, 학습하지 않음 New로 구분하였다. 모든 그래프에서 빨간 점은 평균을 나타내며, 오차 막대는 95% 신뢰구간으로 표시하였다.

## plot
p3.AsyPtt.long.all.p2 <- p3.AsyPtt.long.all %>% filter(cSrc != "List_3", Resp != "New")
p3.AsyPtt.g.all.p2 <- p3.AsyPtt.g.all %>% filter(cSrc != "List_3", Resp != "New")
p3.all.plot1 <- ggplot(data=p3.AsyPtt.long.all.p2, aes(x=cSrc, y=Rsp, fill=Resp)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .9, width = 0.8, colour="black", size = 1.02) +
  geom_pointrange(data=p3.AsyPtt.g.all.p2, aes(x = cSrc, y=Rsp.M, ymin = Rsp.M-Rsp.ci, ymax = Rsp.M+Rsp.ci),
                  position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
  facet_grid(.~Btw, scales="free_x", space = "free",
             labeller = labeller(Btw = c("1" = "Experimental Group","2" = "Control Group"))) +
  scale_x_discrete(labels=c("List 1","List 2")) +
  scale_fill_manual(values = c("#feb24c", "#91bfdb"),
                    labels = c("Day 1 Response", "Day 2 Response")) +
  coord_cartesian(ylim = c(0, 105), clip = "on") +
  labs(x = "Source Response by Object List", y = "Proportion of Response (%)", fill ="Attribution") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        strip.text.x = element_text(face = "plain", size = 15, color = "black"),
        strip.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
        panel.spacing=unit(1, "lines"),
        plot.margin = margin(1, 0.3, 1, 0.3, "cm"), 
        legend.position=c(0.8, 0.85))

p3.exp.plot1 <- ggplot(data=p3.AsyPtt.long.exp, aes(x=cSrc, y=Rsp, fill=Resp)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .7, width = .65, colour="black", size = 1.02) +
  geom_point(position=position_dodge(0.65), aes(x=cSrc, y=Rsp, group=Resp, color = SN), size = 3, alpha = .4, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.swide.exp,cSrc=="List_1"), inherit.aes = FALSE,
               aes(x=1-.22, y=filter(p3.AsyPtt.swide.exp,cSrc=="List_1")$"Day_1",
                   xend=1, yend=filter(p3.AsyPtt.swide.exp,cSrc=="List_1")$"Day_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.swide.exp,cSrc=="List_1"), inherit.aes = FALSE,
               aes(x=1, y=filter(p3.AsyPtt.swide.exp,cSrc=="List_1")$"Day_2",
                   xend=1+.22, yend=filter(p3.AsyPtt.swide.exp,cSrc=="List_1")$"New", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.swide.exp,cSrc=="List_2"), inherit.aes = FALSE,
               aes(x=2-.22, y=filter(p3.AsyPtt.swide.exp,cSrc=="List_2")$"Day_1",
                   xend=2, yend=filter(p3.AsyPtt.swide.exp,cSrc=="List_2")$"Day_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.swide.exp,cSrc=="List_2"), inherit.aes = FALSE,
               aes(x=2, y=filter(p3.AsyPtt.swide.exp,cSrc=="List_2")$"Day_2",
                   xend=2+.22, yend=filter(p3.AsyPtt.swide.exp,cSrc=="List_2")$"New", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.swide.exp,cSrc=="List_3"), inherit.aes = FALSE,
               aes(x=3-.22, y=filter(p3.AsyPtt.swide.exp,cSrc=="List_3")$"Day_1",
                   xend=3, yend=filter(p3.AsyPtt.swide.exp,cSrc=="List_3")$"Day_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.swide.exp,cSrc=="List_3"), inherit.aes = FALSE,
               aes(x=3, y=filter(p3.AsyPtt.swide.exp,cSrc=="List_3")$"Day_2",
                   xend=3+.22, yend=filter(p3.AsyPtt.swide.exp,cSrc=="List_3")$"New", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_pointrange(data=p3.AsyPtt.g.exp, aes(x = cSrc, y = Rsp.M, ymin = Rsp.M-Rsp.ci, ymax = Rsp.M+Rsp.ci),
                  position = position_dodge(0.65), color = "darkred", size = 1, show.legend = FALSE) +
  scale_fill_manual(values = c("#e69f00","#56b4e9", "#ff6164"),
                    labels = c("Day 1", "Day 2", "New")) +
  scale_x_discrete(labels = c("List 1", "List 2", "List 3")) +
  coord_cartesian(ylim = c(0, 105), clip = "on") +
  labs(x = "Object List", y = "Proportion of Response (%)", fill ="Attribution") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"), 
        legend.position="top")
p3.con.plot1 <- ggplot(data=p3.AsyPtt.long.con, aes(x=cSrc, y=Rsp, fill=Resp)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .7, width = .65, colour="black", size = 1.02) +
  geom_point(position=position_dodge(0.65), aes(x=cSrc, y=Rsp, group=Resp, color = SN), size = 3, alpha = .4, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.swide.con,cSrc=="List_1"), inherit.aes = FALSE,
               aes(x=1-.22, y=filter(p3.AsyPtt.swide.con,cSrc=="List_1")$"Day_1",
                   xend=1, yend=filter(p3.AsyPtt.swide.con,cSrc=="List_1")$"Day_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.swide.con,cSrc=="List_1"), inherit.aes = FALSE,
               aes(x=1, y=filter(p3.AsyPtt.swide.con,cSrc=="List_1")$"Day_2",
                   xend=1+.22, yend=filter(p3.AsyPtt.swide.con,cSrc=="List_1")$"New", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.swide.con,cSrc=="List_2"), inherit.aes = FALSE,
               aes(x=2-.22, y=filter(p3.AsyPtt.swide.con,cSrc=="List_2")$"Day_1",
                   xend=2, yend=filter(p3.AsyPtt.swide.con,cSrc=="List_2")$"Day_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.swide.con,cSrc=="List_2"), inherit.aes = FALSE,
               aes(x=2, y=filter(p3.AsyPtt.swide.con,cSrc=="List_2")$"Day_2",
                   xend=2+.22, yend=filter(p3.AsyPtt.swide.con,cSrc=="List_2")$"New", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.swide.con,cSrc=="List_3"), inherit.aes = FALSE,
               aes(x=3-.22, y=filter(p3.AsyPtt.swide.con,cSrc=="List_3")$"Day_1",
                   xend=3, yend=filter(p3.AsyPtt.swide.con,cSrc=="List_3")$"Day_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.swide.con,cSrc=="List_3"), inherit.aes = FALSE,
               aes(x=3, y=filter(p3.AsyPtt.swide.con,cSrc=="List_3")$"Day_2",
                   xend=3+.22, yend=filter(p3.AsyPtt.swide.con,cSrc=="List_3")$"New", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_pointrange(data=p3.AsyPtt.g.con, aes(x = cSrc, y=Rsp.M, ymin = Rsp.M-Rsp.ci, ymax = Rsp.M+Rsp.ci),
                  position = position_dodge(0.65), color = "darkred", size = 1, show.legend = FALSE) +
  scale_fill_manual(values = c("#e69f00","#56b4e9", "#ff6164"),
                    labels = c("Day 1", "Day 2", "New")) +
  scale_x_discrete(labels = c("List 1", "List 2", "List 3")) +
  coord_cartesian(ylim = c(0, 105), clip = "on") +
  labs(x = "Object List", y = "Proportion of Response (%)", fill ="Attribution") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"), 
        legend.position="top")

ggpubr::ggarrange(p3.all.plot1, labels = "A) All Group",
          ggpubr::ggarrange(p3.exp.plot1, p3.con.plot1, ncol = 2, labels = c("B) Experimental Group", "C) Control Group"), 
                    hjust = -0.1, vjust=1, font.label = list(size = 16)), nrow = 2, 
          hjust = -0.1, vjust=1, font.label = list(size = 16)) 


2.2.1.2.1 목록 1, 목록 2의 출처 반응 오류 분석


2.2.1.2.1.1 혼합 요인 분산 분석


기억 갱신 효과를 반영하는 비대칭적 출처 반응 패턴을 살펴보기 위해, 목록 1목록 2에서의 학습 출처 오류를 살펴보았다.

# List 1 & 2 Incorrect Source Response
p3.AsyPtt.long.all.2 <- p3.AsyPtt.long.all %>% unite(cSrc_Resp, cSrc:Resp, remove=FALSE) %>% 
  rename(sResp = "cSrc_Resp")
p3.AsyPtt.long.all.2$sResp[p3.AsyPtt.long.all.2$sResp=='List_1_Day_1'] <- 'List 1 Correct'
p3.AsyPtt.long.all.2$sResp[p3.AsyPtt.long.all.2$sResp=='List_2_Day_2'] <- 'List 2 Correct'
p3.AsyPtt.long.all.2$sResp[p3.AsyPtt.long.all.2$sResp=='List_1_Day_2'] <- 'Source Confusion'
p3.AsyPtt.long.all.2$sResp[p3.AsyPtt.long.all.2$sResp=='List_2_Day_1'] <- 'Intrusion'
p3.AsyPtt.long.all.2$sResp <- factor(p3.AsyPtt.long.all.2$sResp)
p3.AsyPtt.long.all.2 <- p3.AsyPtt.long.all.2 %>% filter(sResp %in% c("Source Confusion", "Intrusion"))

p3.AsyPtt.g.all.2 <- p3.AsyPtt.long.all.2 %>% group_by(Btw, sResp) %>%
  summarise(Rsp.M = mean(Rsp), Rsp.SD = sd(Rsp)) %>% ungroup()
p3.AsyPtt.g.all.2$Rsp.se <- Rmisc::summarySEwithin(data = p3.AsyPtt.long.all.2, idvar = "SN",
                                                   measurevar = "Rsp", betweenvars = "Btw", withinvars = "sResp")$se
p3.AsyPtt.g.all.2$Rsp.ci <- Rmisc::summarySEwithin(data = p3.AsyPtt.long.all.2, idvar = "SN",
                                                   measurevar = "Rsp", betweenvars = "Btw", withinvars = "sResp")$ci
p3.AsyPtt.g.all.2 %>% kable(digit=2)
Btw sResp Rsp.M Rsp.SD Rsp.se Rsp.ci
1 Intrusion 31.73 11.74 1.83 3.87
1 Source Confusion 21.30 8.51 1.83 3.87
2 Intrusion 25.80 8.99 1.74 3.68
2 Source Confusion 23.95 8.68 1.74 3.68

Source Confusion (L1>D2)Intrusion (L2>D1)에서 집단 간, 집단 내의 차이를 분석하기 위해 집단과 물체 목록에서의 출처 오류를 요인으로 한 2 X 2 혼합 요인 분산분석을 수행하였다.

p3.AsyPtt.all.2.aov <- aov_ez(id = "SN", dv = "Rsp", data = p3.AsyPtt.long.all.2, between = "Btw", within = "sResp")
anova(p3.AsyPtt.all.2.aov, es = "pes") %>% kable(digits=3)
num Df den Df MSE F pes Pr(>F)
Btw 1 34 80.805 0.596 0.017 0.445
sResp 1 34 102.365 6.633 0.163 0.015
Btw:sResp 1 34 102.365 3.236 0.087 0.081

분석 결과, 출처 반응의 주효과가 유의하였다. 집단의 주효과와 집단과 출처 반응의 상호작용은 유의하지 않았다. 사후 분석으로 각 집단 내의 출처 오류와 집단 간의 출처 오류 차이를 살펴보았다.

# source response contrast
p3.AsyPtt.m2.1.all <- emmeans(p3.AsyPtt.all.2.aov, "sResp", by = "Btw", type = "response")
p3.AsyPtt.m2.1.all.pair <- update(pairs(p3.AsyPtt.m2.1.all), by = NULL, adjust = "tukey")
p3.AsyPtt.m2.1.all.pair %>% summary(infer = TRUE) %>% kable(digits=3)
contrast Btw estimate SE df lower.CL upper.CL t.ratio p.value
Intrusion - Source.Confusion 1 10.432 3.373 34 2.542 18.322 3.093 0.008
Intrusion - Source.Confusion 2 1.852 3.373 34 -6.038 9.742 0.549 0.829
# group contrast
p3.AsyPtt.m2.2.all <- emmeans(p3.AsyPtt.all.2.aov, "Btw", by = "sResp", type = "response")
p3.AsyPtt.m2.2.all.pair <- update(pairs(p3.AsyPtt.m2.1.all), by = NULL, adjust = "tukey")
p3.AsyPtt.m2.2.all.pair %>% summary(infer = TRUE) %>% kable(digits=3)
contrast Btw estimate SE df lower.CL upper.CL t.ratio p.value
Intrusion - Source.Confusion 1 10.432 3.373 34 2.542 18.322 3.093 0.008
Intrusion - Source.Confusion 2 1.852 3.373 34 -6.038 9.742 0.549 0.829

출처 반응에 따른 사후 분석을 수행한 결과, 실험 집단에서 Source Confusion (L1>D2)Intrusion (L2>D1)보다 유의하게 낮은 비대칭적 출처 오귀인 패턴을 보였다. 통제 집단에서는 Source Confusion (L1>D2)Intrusion (L2>D1)의 차이가 유의하지 않았다. 각 출처 반응에서 집단 간의 차이에 대한 사후 분석 결과, 실험 집단통제 집단보다 높은 Intrusion (L2>D1)을 보이는 경향이 나타났다. 그러나 분산 분석에서 집단과 출처 반응 간의 상호작용이 유의하지 않았다는 것을 고려할 필요가 있다.

p3.AsyPtt.m2.3.all <- emmeans(p3.AsyPtt.all.2.aov, c("sResp","Btw"), by = NULL, type = "response")
plot(p3.AsyPtt.m2.3.all, horizontal=F, comparisons=T) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())


2.2.1.2.1.2 일반화 선형 혼합 모형; GLMM


집단과 물체 목록에서의 Source Confusion (L1>D2), Intrusion (L2>D1) 출처 반응을 일반화 선형 혼합 모형으로 검증하였다.

p3.sErr <- read.csv("MemUdt_PE_d3t6_m.csv", header = T) 
p3.sErr <- p3.sErr %>% filter(cSrc != 3)
p3.sErr$SN = factor(p3.sErr$SN); 
p3.sErr$Btw = factor(p3.sErr$Btw, levels=c(1,2), labels=c("Experimental", "Control"))
p3.sErr$cSrc = factor(p3.sErr$cSrc, labels=c("List_1", "List_2"))
p3.sErr$Resp <- factor(p3.sErr$Resp, levels=c(1,2,3), labels=c("Day_1", "Day_2", "New"))
p3.sErr$sErr <- as.numeric(p3.sErr$Corr==3 | p3.sErr$Corr==2);
p3.sErr$sincor <- as.numeric(p3.sErr$Corr==0)
(nc <- detectCores())
cl <- makeCluster(rep("localhost", nc))

p3.src.sErr.Model.1 <- afex::mixed(sErr ~ Btw*cSrc + (1|SN) + (1|IMname),
                             p3.sErr, method = "LRT", cl = cl,
                             family=binomial(link="logit"),
                             control = glmerControl(optCtrl = list(maxfun = 1e6)))

save(p3.src.sErr.Model.1 , file="d3_src_sErr_afex.Rdata")
stopCluster(cl)
anova(p3.src.sErr.Model.1) %>% kable(digit=3)

분석 결과, 출처 반응의 주효과, 집단과 출처 반응의 상호작용이 유의하였다.

p3.src.sErr.m1 <- emmeans(p3.src.sErr.Model.1, c("cSrc"), by = "Btw", type = "response")
p3.src.sErr.m1.pair <- update(pairs(p3.src.sErr.m1), by = NULL, adjust= "tukey")
p3.src.sErr.m1.pair %>% summary(infer = TRUE) %>% kable(digits=3)

p3.src.sErr.m2 <- emmeans(p3.src.sErr.Model.1, c("Btw"), by = "cSrc", type = "response")
p3.src.sErr.m2.pair <- update(pairs(p3.src.sErr.m2), by = NULL, adjust= "tukey")
p3.src.sErr.m2.pair %>% summary(infer = TRUE) %>% kable(digits=3)

p3.src.sErr.m3 <- emmeans(p3.src.sErr.Model.1, c("cSrc","Btw"), by = NULL, type = "response")
p3.src.sErr.m3.pair <- update(pairs(p3.src.sErr.m3), by = NULL, adjust= "tukey")
p3.src.sErr.m3.pair %>% summary(infer = TRUE) %>% kable(digits=3)

사후 분석 결과, 실험 집단에서 Source Confusion (L1>D2)Intrusion (L2>D1)보다 유의하게 낮은 비대칭적 출처 오귀인 패턴을 보였다. 통제 집단에서는 Source Confusion (L1>D2)Intrusion (L2>D1)의 차이가 유의하지 않았다. 또한, 실험 집단통제 집단보다 유의하게 높은 Intrusion (L2>D1) 수준을 보였다. 그러나 이 차이는 상호작용의 모든 비교에 대한 사후 분석에서는 나타나지 않았다.

plot(p3.src.sErr.m3, horizontal=F, comparisons=T) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())


2.2.1.2.2 목록 1, 목록 2 출처 반응 정확도


2.2.1.2.2.1 혼합 요인 분산 분석


목록 1, 목록 2의 출처 반응 정확도에서 집단과 정확 출처 반응에 따른 차이를 분석하였다.

# List 1 & 2 & 3 Correct Source Response
p3.AsyPtt.long.all.1 <- p3.AsyPtt.long.all %>% unite(cSrc_Resp, cSrc:Resp, remove=FALSE) %>% 
  rename(sResp = "cSrc_Resp") 
p3.AsyPtt.long.all.1$sResp[p3.AsyPtt.long.all.1$sResp=='List_1_Day_1'] <- 'List 1 Correct'
p3.AsyPtt.long.all.1$sResp[p3.AsyPtt.long.all.1$sResp=='List_2_Day_2'] <- 'List 2 Correct'
p3.AsyPtt.long.all.1$sResp[p3.AsyPtt.long.all.1$sResp=='List_1_Day_2'] <- 'Source Confusion'
p3.AsyPtt.long.all.1$sResp[p3.AsyPtt.long.all.1$sResp=='List_2_Day_1'] <- 'Intrusion'
p3.AsyPtt.long.all.1$sResp <- factor(p3.AsyPtt.long.all.1$sResp)
p3.AsyPtt.long.all.1 <- p3.AsyPtt.long.all.1 %>% filter(sResp %in% c("List 1 Correct", "List 2 Correct"))
p3.AsyPtt.long.all.1$Btw <- factor(p3.AsyPtt.long.all.1$Btw, levels=c(1,2), labels=c("Experimental","Control"))

p3.AsyPtt.g.all.1 <- p3.AsyPtt.long.all.1 %>% group_by(Btw, sResp) %>%
  summarise(Rsp.M = mean(Rsp), Rsp.SD = sd(Rsp)) %>% ungroup()
p3.AsyPtt.g.all.1$Rsp <- p3.AsyPtt.g.all.1$Rsp.M
p3.AsyPtt.g.all.1$Rsp.se <- Rmisc::summarySEwithin(data = p3.AsyPtt.long.all.1, idvar = "SN",
                                                   measurevar = "Rsp", betweenvars = "Btw", withinvars = "sResp")$se
p3.AsyPtt.g.all.1$Rsp.ci <- Rmisc::summarySEwithin(data = p3.AsyPtt.long.all.1, idvar = "SN",
                                                   measurevar = "Rsp", betweenvars = "Btw", withinvars = "sResp")$ci
p3.AsyPtt.g.all.1 %>% kable(digit=2)
Btw sResp Rsp.M Rsp.SD Rsp Rsp.se Rsp.ci
Experimental List 1 Correct 75.43 10.13 75.43 1.79 3.78
Experimental List 2 Correct 66.05 12.50 66.05 1.79 3.78
Control List 1 Correct 71.42 9.68 71.42 1.91 4.02
Control List 2 Correct 70.62 10.19 70.62 1.91 4.02

집단과 정확 출처 반응을 요인으로 한 2 X 2 혼합 요인 분산분석을 수행하였다.

p3.AsyPtt.all.1.aov <- aov_ez(id = "SN", dv = "Rsp", data = p3.AsyPtt.long.all.1, between = "Btw", within = "sResp")
anova(p3.AsyPtt.all.1.aov, es = "pes") %>% kable(digits=3)
num Df den Df MSE F pes Pr(>F)
Btw 1 34 118.600 0.012 0.000 0.914
sResp 1 34 109.514 4.263 0.111 0.047
Btw:sResp 1 34 109.514 3.025 0.082 0.091

분석 결과, 출처 반응의 주효과가 유의하였다.

p3.AsyPtt.m1.1.all <- emmeans(p3.AsyPtt.all.1.aov, "sResp", by = "Btw", type = "response")
p3.AsyPtt.m1.1.all.pair <- update(pairs(p3.AsyPtt.m1.1.all), by = NULL, adjust = "tukey")
p3.AsyPtt.m1.1.all.pair %>% summary(infer=T) %>% kable(digits=3)
contrast Btw estimate SE df lower.CL upper.CL t.ratio p.value
List.1.Correct - List.2.Correct Experimental 9.383 3.488 34 1.222 17.544 2.69 0.022
List.1.Correct - List.2.Correct Control 0.802 3.488 34 -7.358 8.963 0.23 0.967

각 집단에서 출처 반응에 따른 사후 분석 결과, 실험 집단에서 List 1 CorrectList 2 Correct보다 유의하게 높은 정확도를 보였다.

plot(p3.AsyPtt.m1.1.all, horizontal=F, comparisons=T) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())


2.2.1.2.2.2 일반화 선형 혼합 모형; GLMM


분산 분석 결과를 보충하기 위해 일반화 선형 혼합 모형으로 검증하였다. 집단, 정확 출처 반응을 고정 효과로 하고 참가자와 자극에 대한 무선 효과로 포함한 일반화 선형 혼합 모형 p3.src.corr.Model을 구성하였다.

p3.sCorr <- read.csv("MemUdt_PE_d3t6_m.csv", header = T) 
p3.sCorr <- p3.sCorr %>% filter(cSrc != 3, Resp != 3); p3.sCorr$SN = factor(p3.sCorr$SN)
p3.sCorr$Btw = factor(p3.sCorr$Btw, levels=c(1,2), labels=c("Experimental","Control"))
p3.sCorr$cSrc = factor(p3.sCorr$cSrc, labels=c("List_1", "List_2"))
p3.sCorr$Resp <- factor(p3.sCorr$Resp, levels=c(1,2), labels=c("Day_1", "Day_2"))
p3.sCorr$sCorr <- as.numeric(p3.sCorr$Corr==1);
(nc <- detectCores())
cl <- makeCluster(rep("localhost", nc))

p3.src.corr.Model.1 <- afex::mixed(sCorr ~ Btw*cSrc + (1|SN) + (1|IMname), 
                             p3.sCorr, method = "LRT", cl = cl, 
                             family=binomial(link="logit"),
                             control = glmerControl(optCtrl = list(maxfun = 1e6)))

save(p3.src.corr.Model.1, file="d3_src_corr_afex.Rdata")
stopCluster(cl)
anova(p3.src.corr.Model.1) %>% kable(digit=3)

분석 결과, 출처 반응의 주효과, 집단과 출처 반응의 상호작용이 유의하였다.

p3.src.corr.m1 <- emmeans(p3.src.corr.Model.1, "cSrc", by = "Btw", type = "response") 
p3.src.corr.m1.pair <- update(pairs(p3.src.corr.m1), by=NULL, adjust="tukey")
p3.src.corr.m1.pair %>% summary(infer=T) %>% kable(digits=3)

p3.src.corr.m2 <- emmeans(p3.src.corr.Model.1, "Btw", by = "cSrc", type = "response") 
p3.src.corr.m2.pair <- update(pairs(p3.src.corr.m2), by=NULL, adjust="tukey")
p3.src.corr.m2.pair %>% summary(infer=T) %>% kable(digits=3)

p3.src.corr.m3 <- emmeans(p3.src.corr.Model.1, c("cSrc", "Btw"), type = "response") 
p3.src.corr.m3.pair <- update(pairs(p3.src.corr.m3), by=NULL, adjust="tukey")
p3.src.corr.m3.pair %>% summary(infer=T) %>% kable(digits=3)

사후 분석 결과, 실험 집단에서 List 1 CorrectList 2 Correct보다 유의하게 높은 정확도를 보였다. 또한, 실험집단통제집단보다 유의하게 낮은 List 2 Correct를 보였다.

plot(p3.src.corr.m3, horizontal=F, comparisons=T) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())


2.2.1.2.3 기타 분석
2.2.1.2.3.1 목록 1, 목록 2의 누락 출처 반응


두 집단에서 List 1 MissList 2 Miss의 차이를 분석하기 위해 집단과 반응을 요인으로한 2 X 2 혼합 요인 분산 분석을 수행하였다.

# List 1 & 2 Error
p3.AsyPtt.long.all.3 <- p3.AsyPtt.long.all %>% unite(cSrc_Resp, cSrc:Resp, remove=FALSE) %>% 
  rename(sResp = "cSrc_Resp")
p3.AsyPtt.long.all.3$sResp[p3.AsyPtt.long.all.3$sResp=='List_1_New'] <- 'List 1 Miss'
p3.AsyPtt.long.all.3$sResp[p3.AsyPtt.long.all.3$sResp=='List_2_New'] <- 'List 2 Miss'
p3.AsyPtt.long.all.3$sResp <- factor(p3.AsyPtt.long.all.3$sResp)
p3.AsyPtt.long.all.3 <- p3.AsyPtt.long.all.3 %>% filter(sResp %in% c("List 1 Miss", "List 2 Miss"))

p3.AsyPtt.g.all.3 <- p3.AsyPtt.long.all.3 %>% group_by(Btw, sResp) %>%
  summarise(Rsp.M = mean(Rsp), Rsp.SD = sd(Rsp)) %>% ungroup()
p3.AsyPtt.g.all.3$Rsp <- p3.AsyPtt.g.all.2$Rsp.M
p3.AsyPtt.g.all.3$Rsp.se <- Rmisc::summarySEwithin(data = p3.AsyPtt.long.all.3, idvar = "SN",
                                                   measurevar = "Rsp", betweenvars = "Btw", withinvars = "sResp")$se
p3.AsyPtt.g.all.3$Rsp.ci <- Rmisc::summarySEwithin(data = p3.AsyPtt.long.all.3, idvar = "SN",
                                                   measurevar = "Rsp", betweenvars = "Btw", withinvars = "sResp")$ci
p3.AsyPtt.g.all.3 %>% kable(digit=2)
Btw sResp Rsp.M Rsp.SD Rsp Rsp.se Rsp.ci
1 List 1 Miss 3.27 3.78 31.73 0.36 0.77
1 List 2 Miss 2.22 2.44 21.30 0.36 0.77
2 List 1 Miss 4.63 3.39 25.80 0.55 1.16
2 List 2 Miss 3.58 2.89 23.95 0.55 1.16
p3.AsyPtt.all.3.aov <- aov_ez(id = "SN", dv = "Rsp", data = p3.AsyPtt.long.all.3, between = "Btw", within = "sResp")
anova(p3.AsyPtt.all.3.aov, es = "pes") %>% kable(digits=3)
num Df den Df MSE F pes Pr(>F)
Btw 1 34 13.130 2.528 0.069 0.121
sResp 1 34 6.933 2.859 0.078 0.100
Btw:sResp 1 34 6.933 0.000 0.000 1.000

분석 결과, 모든 효과가 유의하지 않았다.


2.2.1.2.3.2 목록 3 정확반응


두 집단 간의 List 3 Correct를 비교하였다.

# List 3 Correct
p3.AsyPtt.long.all.4 <- p3.AsyPtt.long.all %>% unite(cSrc_Resp, cSrc:Resp, remove=FALSE) %>% 
  rename(sResp = "cSrc_Resp")
p3.AsyPtt.long.all.4$sResp[p3.AsyPtt.long.all.4$sResp=='List_3_New'] <- 'List 3 Correct'
p3.AsyPtt.long.all.4$sResp <- factor(p3.AsyPtt.long.all.4$sResp)
p3.AsyPtt.long.all.4 <- p3.AsyPtt.long.all.4 %>% filter(sResp %in% c("List 3 Correct"))

p3.AsyPtt.g.all.4 <- p3.AsyPtt.long.all.4 %>% group_by(Btw) %>%
  summarise(Rsp.M = mean(Rsp), Rsp.SD = sd(Rsp)) %>% ungroup()
p3.AsyPtt.g.all.4$Rsp.se <- Rmisc::summarySE(data = p3.AsyPtt.long.all.4, 
                                                   measurevar = "Rsp", groupvars = "Btw")$se
p3.AsyPtt.g.all.4$Rsp.ci <- Rmisc::summarySE(data = p3.AsyPtt.long.all.4, 
                                                   measurevar = "Rsp", groupvars = "Btw")$ci
p3.AsyPtt.g.all.4 %>% kable(digit=2)
Btw Rsp.M Rsp.SD Rsp.se Rsp.ci
1 97.28 3.52 0.83 1.75
2 95.62 6.94 1.64 3.45
p3.AsyPtt.all.4.aov <- aov_ez(id = "SN", dv = "Rsp", data = p3.AsyPtt.long.all.4, between = "Btw")
anova(p3.AsyPtt.all.4.aov, es = "pes") %>% kable(digits=3)
num Df den Df MSE F pes Pr(>F)
Btw 1 34 30.261 0.826 0.024 0.37

분석 결과, List 3 Correct에서 두 집단 간의 차이는 유의하지 않았다.


2.2.1.2.3.3 목록 3에서의 오경보


List 3 FA - Day 1List 3 FA - Day 2에서 집단과 출처 반응을 요인으로 한 2 X 2 혼합 요인 분산 분석을 수행하였다.

# List 3 Incorrect Source Response 
p3.AsyPtt.long.all.5 <- p3.AsyPtt.long.all %>% unite(cSrc_Resp, cSrc:Resp, remove=FALSE) %>% 
  rename(sResp = "cSrc_Resp")
p3.AsyPtt.long.all.5$sResp[p3.AsyPtt.long.all.5$sResp=='List_3_Day_1'] <- 'List 3 FA - D1'
p3.AsyPtt.long.all.5$sResp[p3.AsyPtt.long.all.5$sResp=='List_3_Day_2'] <- 'List 3 FA - D2'
p3.AsyPtt.long.all.5$sResp <- factor(p3.AsyPtt.long.all.5$sResp)
p3.AsyPtt.long.all.5 <- p3.AsyPtt.long.all.5 %>% filter(sResp %in% c("List 3 FA - D1", "List 3 FA - D2"))

p3.AsyPtt.g.all.5 <- p3.AsyPtt.long.all.5 %>% group_by(Btw, sResp) %>%
  summarise(Rsp.M = mean(Rsp), Rsp.SD = sd(Rsp)) %>% ungroup()
p3.AsyPtt.g.all.5$Rsp.se <- Rmisc::summarySEwithin(data = p3.AsyPtt.long.all.5, idvar = "SN",
                                                   measurevar = "Rsp", betweenvars = "Btw", withinvars = "sResp")$se
p3.AsyPtt.g.all.5$Rsp.ci <- Rmisc::summarySEwithin(data = p3.AsyPtt.long.all.5, idvar = "SN",
                                                   measurevar = "Rsp", betweenvars = "Btw", withinvars = "sResp")$ci
p3.AsyPtt.g.all.5 %>% kable(digit=2)
Btw sResp Rsp.M Rsp.SD Rsp.se Rsp.ci
1 List 3 FA - D1 1.98 3.16 0.39 0.82
1 List 3 FA - D2 0.74 1.01 0.39 0.82
2 List 3 FA - D1 2.28 3.84 0.76 1.61
2 List 3 FA - D2 2.10 5.28 0.76 1.61
p3.AsyPtt.all.5.aov <- aov_ez(id = "SN", dv = "Rsp", data = p3.AsyPtt.long.all.5, between = "Btw", within = "sResp")
anova(p3.AsyPtt.all.5.aov, es = "pes") %>% kable(digits=3)
num Df den Df MSE F pes Pr(>F)
Btw 1 34 15.131 0.826 0.024 0.370
sResp 1 34 11.661 0.778 0.022 0.384
Btw:sResp 1 34 11.661 0.425 0.012 0.519

분석 결과, 모든 효과가 유의하지 않았다.


2.2.1.3 예측 오류 정도와 기억 갱신 간의 관계


2.2.1.3.1 예측 오류 정도에 따른 비대칭적 출처 오귀인 패턴


p3.AsyPtt.long.pe <- p3 %>%  group_by(SN, Btw, cSrc, cPE, Resp) %>%
  summarise(Rsp = length(Resp)/30*100) %>% ungroup()
p3.AsyPtt.wide.pe <- p3.AsyPtt.long.pe %>% spread(key = Resp, value = Rsp)
p3.AsyPtt.long.pe <- gather(p3.AsyPtt.wide.pe, Resp, Rsp, Day_1:New, factor_key=TRUE)
p3.AsyPtt.long.pe[is.na(p3.AsyPtt.long.pe)] <- 0 
p3.AsyPtt.long.pe <- arrange(p3.AsyPtt.long.pe, SN, cSrc, cPE, Resp, Rsp)
p3.AsyPtt.long.pe <- p3.AsyPtt.long.pe %>% filter(cSrc != "List_3", Resp != "New", cPE!="pe0")
p3.AsyPtt.long.pe.exp <- p3.AsyPtt.long.pe %>% filter(Btw==1)
p3.AsyPtt.long.pe.con <- p3.AsyPtt.long.pe %>% filter(Btw==2)

# wide format
p3.AsyPtt.swide.pe <- p3.AsyPtt.long.pe %>% spread(key = Resp, value = Rsp)
p3.AsyPtt.swide.pe.exp <- p3.AsyPtt.swide.pe %>% filter(Btw==1)
p3.AsyPtt.swide.pe.con <- p3.AsyPtt.swide.pe %>% filter(Btw==2)

# summary table
p3.AsyPtt.g.pe <- p3.AsyPtt.long.pe  %>% 
  group_by(Btw, cPE, cSrc, Resp) %>%
  summarise(Rsp.M = mean(Rsp), Rsp.SD = sd(Rsp)) %>% ungroup()
p3.AsyPtt.g.pe$Rsp.se <- Rmisc::summarySEwithin(data = p3.AsyPtt.long.pe, measurevar = "Rsp", idvar = "SN", 
                                                 betweenvars = "Btw", withinvars = c("cPE","cSrc","Resp"))$se
p3.AsyPtt.g.pe$Rsp.ci <- Rmisc::summarySEwithin(data = p3.AsyPtt.long.pe, measurevar = "Rsp", idvar = "SN", 
                                                 betweenvars = "Btw", withinvars = c("cPE","cSrc","Resp"))$ci
p3.AsyPtt.g.pe.exp <- p3.AsyPtt.g.pe %>% filter(Btw==1)
p3.AsyPtt.g.pe.con <- p3.AsyPtt.g.pe %>% filter(Btw==2)
# p3.AsyPtt.g.pe %>% kable(digits=2)

예측 오류 조건에 따른 출처 오귀인 패턴의 그래프를 나타내었다.


p3.AsyPtt.long.pe1 <- p3.AsyPtt.long.pe %>% filter(cPE == "pe1")
p3.AsyPtt.g.all.pe1 <- p3.AsyPtt.g.pe %>% filter(cPE == "pe1")
p3.all.plot3.pe1 <- ggplot(data=p3.AsyPtt.long.pe1, aes(x=cSrc, y=Rsp, fill=Resp)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .9, width = 0.8, colour="black", size = 1.02) +
  geom_pointrange(data=p3.AsyPtt.g.all.pe1, aes(x = cSrc, y=Rsp.M, ymin = Rsp.M-Rsp.ci, ymax = Rsp.M+Rsp.ci),
                  position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
  # geom_point(data=p3.AsyPtt.g.all.pe1, aes(x = cSrc, y=Rsp.M),
  # position = position_dodge(0.80), color = "black", size = 5, show.legend = FALSE) +
  # geom_errorbar(data=p3.AsyPtt.g.all.pe1, aes(x=cSrc, ymin = Rsp.M-Rsp.ci, ymax = Rsp.M+Rsp.ci), size = 1, width = .2, position = position_dodge(0.8)) +
  facet_grid(.~Btw, scales="free_x", space = "free",
             labeller = labeller(Btw = c("1" = "Experimental Group","2" = "Control Group"))) +
  scale_x_discrete(labels=c("List 1","List 2")) +
  scale_fill_manual(values = c("#feb24c", "#91bfdb"),
                    # scale_fill_manual(values = c("#a3d8d7", "#ed9b5d"),#a3d8d7 #72c2c8
                    # scale_fill_manual(values = c("#feb24c", "#4292c6"),
                    # scale_fill_manual(values = c("#c6d9f1", "#254061"),
                    labels = c("Day 1 Response", "Day 2 Response")) +
  coord_cartesian(ylim = c(0, 105), clip = "on") +
  labs(x = "Source Response by Object List", y = "Proportion of Response (%)", fill ="Attribution") +
  # ggtitle("Source Memory Response") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        strip.text.x = element_text(face = "plain", size = 15, color = "black"),
        strip.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
        panel.spacing=unit(1, "lines"),
        plot.margin = margin(1, 0.3, 1, 0.3, "cm"), 
        # plot.title = element_text(hjust = 0.5),
        legend.position=c(0.8, 0.85))

p3.AsyPtt.long.pe2 <- p3.AsyPtt.long.pe %>% filter(cPE == "pe2")
p3.AsyPtt.g.all.pe2 <- p3.AsyPtt.g.pe %>% filter(cPE == "pe2")
p3.all.plot3.pe2 <- ggplot(data=p3.AsyPtt.long.pe2, aes(x=cSrc, y=Rsp, fill=Resp)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .9, width = 0.8, colour="black", size = 1.02) +
  geom_pointrange(data=p3.AsyPtt.g.all.pe2, aes(x = cSrc, y=Rsp.M, ymin = Rsp.M-Rsp.ci, ymax = Rsp.M+Rsp.ci),
                  position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
  # geom_point(data=p3.AsyPtt.g.all.pe2, aes(x = cSrc, y=Rsp.M),
  # position = position_dodge(0.80), color = "black", size = 5, show.legend = FALSE) +
  # geom_errorbar(data=p3.AsyPtt.g.all.pe2, aes(x=cSrc, ymin = Rsp.M-Rsp.ci, ymax = Rsp.M+Rsp.ci), size = 1, width = .2, position = position_dodge(0.8)) +
  facet_grid(.~Btw, scales="free_x", space = "free",
             labeller = labeller(Btw = c("1" = "Experimental Group","2" = "Control Group"))) +
  scale_x_discrete(labels=c("List 1","List 2")) +
  scale_fill_manual(values = c("#feb24c", "#91bfdb"),
                    # scale_fill_manual(values = c("#a3d8d7", "#ed9b5d"),#a3d8d7 #72c2c8
                    # scale_fill_manual(values = c("#feb24c", "#4292c6"),
                    # scale_fill_manual(values = c("#c6d9f1", "#254061"),
                    labels = c("Day 1 Response", "Day 2 Response")) +
  coord_cartesian(ylim = c(0, 105), clip = "on") +
  labs(x = "Source Response by Object List", y = "Proportion of Response (%)", fill ="Attribution") +
  # ggtitle("Source Memory Response") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        strip.text.x = element_text(face = "plain", size = 15, color = "black"),
        strip.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
        panel.spacing=unit(1, "lines"),
        plot.margin = margin(1, 0.3, 1, 0.3, "cm"), 
        # plot.title = element_text(hjust = 0.5),
        legend.position=c(0.8, 0.85))
p3.AsyPtt.long.pe3 <- p3.AsyPtt.long.pe %>% filter(cPE == "pe3")
p3.AsyPtt.g.all.pe3 <- p3.AsyPtt.g.pe %>% filter(cPE == "pe3")
p3.all.plot3.pe3 <- ggplot(data=p3.AsyPtt.long.pe3, aes(x=cSrc, y=Rsp, fill=Resp)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .9, width = 0.8, colour="black", size = 1.02) +
  geom_pointrange(data=p3.AsyPtt.g.all.pe3, aes(x = cSrc, y=Rsp.M, ymin = Rsp.M-Rsp.ci, ymax = Rsp.M+Rsp.ci),
                  position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
  # geom_point(data=p3.AsyPtt.g.all.pe3, aes(x = cSrc, y=Rsp.M),
  # position = position_dodge(0.80), color = "black", size = 5, show.legend = FALSE) +
  # geom_errorbar(data=p3.AsyPtt.g.all.pe3, aes(x=cSrc, ymin = Rsp.M-Rsp.ci, ymax = Rsp.M+Rsp.ci), size = 1, width = .2, position = position_dodge(0.8)) +
  facet_grid(.~Btw, scales="free_x", space = "free",
             labeller = labeller(Btw = c("1" = "Experimental Group","2" = "Control Group"))) +
  scale_x_discrete(labels=c("List 1","List 2")) +
  scale_fill_manual(values = c("#feb24c", "#91bfdb"),
                    # scale_fill_manual(values = c("#a3d8d7", "#ed9b5d"),#a3d8d7 #72c2c8
                    # scale_fill_manual(values = c("#feb24c", "#4292c6"),
                    # scale_fill_manual(values = c("#c6d9f1", "#254061"),
                    labels = c("Day 1 Response", "Day 2 Response")) +
  coord_cartesian(ylim = c(0, 105), clip = "on") +
  labs(x = "Source Response by Object List", y = "Proportion of Response (%)", fill ="Attribution") +
  # ggtitle("Source Memory Response") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        strip.text.x = element_text(face = "plain", size = 15, color = "black"),
        strip.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
        panel.spacing=unit(1, "lines"),
        plot.margin = margin(1, 0.3, 1, 0.3, "cm"), 
        # plot.title = element_text(hjust = 0.5),
        legend.position=c(0.8, 0.85))


ggpubr::ggarrange(p3.all.plot3.pe1, p3.all.plot3.pe2, p3.all.plot3.pe3, ncol=3, 
          labels = c("A) PE 1 (0%)", "B) PE 2 (50%)", "C) PE 3(100%)"),
          hjust = -0.1, vjust=1, font.label = list(size = 16)) 


각 예측 오류 조건에서 Source ConfusionIntrusion 간의 비대칭적 패턴에 대한 혼합 요인 분산분석을 수행하였다.

p3.AsyPtt.long.pe.2 <- p3.AsyPtt.long.pe %>% unite(cSrc_Resp, c(cSrc,Resp), remove=FALSE) %>% 
  rename(sResp = "cSrc_Resp")
p3.AsyPtt.long.pe.2$sResp[p3.AsyPtt.long.pe.2$sResp=='List_1_Day_1'] <- 'List 1 Correct'
p3.AsyPtt.long.pe.2$sResp[p3.AsyPtt.long.pe.2$sResp=='List_2_Day_2'] <- 'List 2 Correct'
p3.AsyPtt.long.pe.2$sResp[p3.AsyPtt.long.pe.2$sResp=='List_1_Day_2'] <- 'Source Confusion'
p3.AsyPtt.long.pe.2$sResp[p3.AsyPtt.long.pe.2$sResp=='List_2_Day_1'] <- 'Intrusion'
p3.AsyPtt.long.pe.2$sResp <- factor(p3.AsyPtt.long.pe.2$sResp)
p3.AsyPtt.long.pe.2 <- p3.AsyPtt.long.pe.2 %>% filter(sResp %in% c("Source Confusion", "Intrusion"))
p3.AsyPtt.long.pe1.2 <- p3.AsyPtt.long.pe.2 %>% filter(cPE == "pe1")
p3.AsyPtt.long.pe2.2 <- p3.AsyPtt.long.pe.2 %>% filter(cPE == "pe2")
p3.AsyPtt.long.pe3.2 <- p3.AsyPtt.long.pe.2 %>% filter(cPE == "pe3")

p3.AsyPtt.g.pe.2 <- p3.AsyPtt.long.pe.2 %>% group_by(Btw, cPE, sResp) %>%
  summarise(Rsp.M = mean(Rsp), Rsp.SD = sd(Rsp)) %>% ungroup()
p3.AsyPtt.g.pe.2$Rsp.se <- Rmisc::summarySEwithin(data = p3.AsyPtt.long.pe.2, idvar = "SN",
                                                   measurevar = "Rsp", betweenvars = "Btw", withinvars = c("cPE","sResp"))$se
p3.AsyPtt.g.pe.2$Rsp.ci <- Rmisc::summarySEwithin(data = p3.AsyPtt.long.pe.2, idvar = "SN",
                                                   measurevar = "Rsp", betweenvars = "Btw", withinvars = c("cPE","sResp"))$ci
p3.AsyPtt.g.pe1.2 <- p3.AsyPtt.g.pe.2 %>% filter(cPE =="pe1")
p3.AsyPtt.g.pe2.2 <- p3.AsyPtt.g.pe.2 %>% filter(cPE =="pe2")
p3.AsyPtt.g.pe3.2 <- p3.AsyPtt.g.pe.2 %>% filter(cPE =="pe3")

PE 1 조건에서의 분석 결과는 아래와 같다.

p3.AsyPtt.g.pe1.2 %>% kable(digits=2)
Btw cPE sResp Rsp.M Rsp.SD Rsp.se Rsp.ci
1 pe1 Intrusion 26.67 9.57 1.75 3.69
1 pe1 Source Confusion 23.89 12.38 2.45 5.17
2 pe1 Intrusion 25.37 12.84 2.87 6.05
2 pe1 Source Confusion 27.78 13.48 2.60 5.49
p3.AsyPtt.pe1.2.aov <- aov_ez(id = "SN", dv = "Rsp", data = p3.AsyPtt.long.pe1.2, between = "Btw", within = "sResp")
anova(p3.AsyPtt.pe1.2.aov, es = "pes") %>% kable(digits=3)
num Df den Df MSE F pes Pr(>F)
Btw 1 34 129.648 0.233 0.007 0.632
sResp 1 34 166.031 0.004 0.000 0.952
Btw:sResp 1 34 166.031 0.729 0.021 0.399

모든 효과가 유의하지 않았다.

p3.AsyPtt.pe1.m1 <- emmeans(p3.AsyPtt.pe1.2.aov, pairwise ~ sResp | Btw, type = "response")
p3.AsyPtt.pe1.m1$contrasts %>% kable(digits=3)
contrast Btw estimate SE df t.ratio p.value
Intrusion - Source.Confusion 1 2.778 4.295 34 0.647 0.522
Intrusion - Source.Confusion 2 -2.407 4.295 34 -0.561 0.579
p3.AsyPtt.pe1.m2 <- emmeans(p3.AsyPtt.pe1.2.aov, pairwise ~ Btw | sResp, type = "response")
p3.AsyPtt.pe1.m2$contrasts %>% kable(digits=3)
contrast sResp estimate SE df t.ratio p.value
1 - 2 Intrusion 1.296 3.774 34 0.343 0.733
1 - 2 Source.Confusion -3.889 4.314 34 -0.901 0.374


PE 2 조건에서의 분석 결과는 아래와 같다.

p3.AsyPtt.g.pe2.2 %>% kable(digits=2)
Btw cPE sResp Rsp.M Rsp.SD Rsp.se Rsp.ci
1 pe2 Intrusion 36.48 13.79 2.51 5.29
1 pe2 Source Confusion 19.26 10.20 2.31 4.87
2 pe2 Intrusion 24.26 10.71 2.46 5.19
2 pe2 Source Confusion 22.59 12.81 3.12 6.58
p3.AsyPtt.pe2.2.aov <- aov_ez(id = "SN", dv = "Rsp", data = p3.AsyPtt.long.pe2.2, between = "Btw", within = "sResp")
anova(p3.AsyPtt.pe2.2.aov, es = "pes") %>% kable(digits=3)
num Df den Df MSE F pes Pr(>F)
Btw 1 34 94.862 3.748 0.099 0.061
sResp 1 34 191.667 8.377 0.198 0.007
Btw:sResp 1 34 191.667 5.681 0.143 0.023

출처 반응의 주효과와 집단과 출처 반응의 상호작용이 유의하였다.

p3.AsyPtt.pe2.m1 <- emmeans(p3.AsyPtt.pe2.2.aov, pairwise ~ sResp | Btw, type = "response")
p3.AsyPtt.pe2.m1$contrasts %>% kable(digits=3)
contrast Btw estimate SE df t.ratio p.value
Intrusion - Source.Confusion 1 17.222 4.615 34 3.732 0.001
Intrusion - Source.Confusion 2 1.667 4.615 34 0.361 0.720
p3.AsyPtt.pe2.m2 <- emmeans(p3.AsyPtt.pe2.2.aov, pairwise ~ Btw | sResp, type = "response")
p3.AsyPtt.pe2.m2$contrasts %>% kable(digits=3)
contrast sResp estimate SE df t.ratio p.value
1 - 2 Intrusion 12.222 4.116 34 2.969 0.005
1 - 2 Source.Confusion -3.333 3.859 34 -0.864 0.394

실험 집단에서 Source Confusion (L1>D2)Intrusion (L2>D1)보다 유의하게 낮은 비대칭적 출처 오귀인 패턴을 보였다. 또한 실험 집단통제 집단보다 높은 Intrusion (L2>D1)을 보이는 경향이 나타났다.


PE 3 조건에서의 분석 결과는 아래와 같다.

p3.AsyPtt.g.pe3.2 %>% kable(digits=2)
Btw cPE sResp Rsp.M Rsp.SD Rsp.se Rsp.ci
1 pe3 Intrusion 32.04 15.56 2.60 5.48
1 pe3 Source Confusion 20.74 9.81 2.51 5.29
2 pe3 Intrusion 27.78 12.21 2.33 4.91
2 pe3 Source Confusion 21.48 8.26 1.81 3.82
p3.AsyPtt.pe3.2.aov <- aov_ez(id = "SN", dv = "Rsp", data = p3.AsyPtt.long.pe3.2, between = "Btw", within = "sResp")
anova(p3.AsyPtt.pe3.2.aov, es = "pes") %>% kable(digits=3)
num Df den Df MSE F pes Pr(>F)
Btw 1 34 123.793 0.450 0.013 0.507
sResp 1 34 153.931 9.048 0.210 0.005
Btw:sResp 1 34 153.931 0.731 0.021 0.399

출처 반응의 주효과가 유의하였다.

p3.AsyPtt.pe3.m1 <- emmeans(p3.AsyPtt.pe3.2.aov, pairwise ~ sResp | Btw, type = "response")
p3.AsyPtt.pe3.m1$contrasts %>% kable(digits=3)
contrast Btw estimate SE df t.ratio p.value
Intrusion - Source.Confusion 1 11.296 4.136 34 2.731 0.010
Intrusion - Source.Confusion 2 6.296 4.136 34 1.522 0.137
p3.AsyPtt.pe3.m2 <- emmeans(p3.AsyPtt.pe3.2.aov, pairwise ~ Btw | sResp, type = "response")
p3.AsyPtt.pe3.m2$contrasts %>% kable(digits=3)
contrast sResp estimate SE df t.ratio p.value
1 - 2 Intrusion 4.259 4.661 34 0.914 0.367
1 - 2 Source.Confusion -0.741 3.022 34 -0.245 0.808

실험 집단에서 Source Confusion (L1>D2)Intrusion (L2>D1)보다 유의하게 낮은 비대칭적 출처 오귀인 패턴을 보였다. 실험 집단통제 집단 간의 Intrusion (L2>D1)의 차이는 나타나지 않았다.

A <- plot(p3.AsyPtt.pe1.m1, horizontal=F, comparisons=T) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())

B <- plot(p3.AsyPtt.pe2.m1, horizontal=F, comparisons=T) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())

C <- plot(p3.AsyPtt.pe3.m1, horizontal=F, comparisons=T) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank())

ggpubr::ggarrange(A, B, C, ncol=3, 
          labels = c("A) PE 1 (0%)", "B) PE 2 (50%)", "C) PE 3 (100%)"),
          hjust = -0.1, vjust=1, font.label = list(size = 16)) 


종합하자면, 예측 오류 조건에 따른 각 집단의 IntrusionSource Confusion의 비대칭적 패턴은 PE 2(50%) 조건과 PE 3(100%) 조건의 실험집단에서 관찰되었다. 또한 PE 2(50%) 조건에서 실험 집단통제 집단보다 높은 Intrusion을 보였다.


2.2.1.3.2 목록 1 정확 반응

각 집단과 예측 오류 조건에서 List 1 Correct의 차이가 있는지 확인하기 위해 각 조건에 대한 정확도 평균과 표준편차를 계산하였다. 아래의 그래프에서 A는 전체 집단, B는 실험 집단, C는 통제 집단을 나타내며, 빨간 점은 평균, 오차 막대는 95% 신뢰구간을 표시한다.

## List 1 Correct Response
# long format
p3.Acc.long.all.1 <- p3 %>% filter(cSrc == "List_1", cPE != "pe0") %>% group_by(SN, Btw, cPE) %>% 
  summarise(Acc = mean(Correct)*100) %>% ungroup()
p3.Acc.long.exp.1 <- p3.Acc.long.all.1 %>% filter(Btw==1)
p3.Acc.long.con.1 <- p3.Acc.long.all.1 %>% filter(Btw==2)

# wide format
p3.Acc.swide.all.1 <- p3.Acc.long.all.1 %>% spread(key = cPE, value = Acc)
p3.Acc.swide.exp.1 <- p3.Acc.swide.all.1 %>% filter(Btw==1)
p3.Acc.swide.con.1 <- p3.Acc.swide.all.1 %>% filter(Btw==2)

# summary
p3.Acc.g.all.1 <- p3.Acc.long.all.1 %>%  group_by(Btw, cPE) %>% 
  summarise(Acc.M = mean(Acc), Acc.SD = sd(Acc)) %>% ungroup() 
p3.Acc.g.all.1$Acc.se <- Rmisc::summarySEwithin(data = p3.Acc.long.all.1, measurevar = "Acc", 
                                                idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$se
p3.Acc.g.all.1$Acc.ci <- Rmisc::summarySEwithin(data = p3.Acc.long.all.1, measurevar = "Acc", 
                                                idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$ci
p3.Acc.g.exp.1 <- p3.Acc.g.all.1 %>% filter(Btw==1)
p3.Acc.g.con.1 <- p3.Acc.g.all.1 %>% filter(Btw==2)
p3.Acc.g.all.1 %>% kable(digits=2)
Btw cPE Acc.M Acc.SD Acc.se Acc.ci
1 pe1 74.07 13.31 1.83 3.86
1 pe2 76.85 12.39 1.97 4.16
1 pe3 75.37 11.44 2.04 4.31
2 pe1 69.07 14.45 2.13 4.50
2 pe2 73.33 15.47 2.78 5.86
2 pe3 71.85 9.51 2.61 5.51
## plot
p3.Acc.g.all.1.p3 <- p3.Acc.g.all.1
p3.Acc.g.all.1.p3$Btw <- factor(p3.Acc.g.all.1.p3$Btw, labels=c("Experimental", "Control"))
p3.plot2.2.all.1.p3 <- ggplot(data=p3.Acc.g.all.1.p3, 
                              aes(x=cPE, y=Acc.M, ymin=Acc.M-Acc.ci, ymax=Acc.M+Acc.ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(40,100), clip = "on") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # scale_y_continuous(breaks = seq(0,80)) +
  labs(x = "Prediction Error", y = "List 1 Correct (%)") +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.75, 0.25),
        legend.title = element_blank(),
        aspect.ratio = 1,
        legend.background = element_blank(),
        plot.margin = margin(0.3, 0.3, 0.3, 0.3, "cm"),
        legend.key = element_blank())

p3.plot2.2.exp.1 <- ggplot(p3.Acc.g.exp.1, mapping=aes(x=cPE, y=Acc.M, group=1)) + 
  geom_ribbon(aes(ymin=Acc.M-Acc.ci, ymax=Acc.M+Acc.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=Acc.M, ymax=Acc.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.long.exp.1, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=Acc, group=SN, color=SN)) +
  geom_point(p3.Acc.long.exp.1, mapping = aes(x=cPE, y=Acc, group=SN, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(30, 100), clip = "on") +
  labs(x = "Prediction Error", y = "List 1 Correct (%)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 Source Memory (L1>D1; Exp)") +
  theme_bw(base_size = 18) +
  theme(axis.title = element_text(face = "plain", size = 18, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        # panel.border=element_blank(),
        aspect.ratio = 1,
        plot.margin = margin(0.3, 0.3, 0.3, 0.3, "cm"))

p3.plot2.2.con.1 <- ggplot(p3.Acc.g.con.1, mapping=aes(x=cPE, y=Acc.M, group=1)) + 
  geom_ribbon(aes(ymin=Acc.M-Acc.ci, ymax=Acc.M+Acc.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=Acc.M, ymax=Acc.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.long.con.1, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=Acc, group=SN, color=SN)) +
  geom_point(p3.Acc.long.con.1, mapping = aes(x=cPE, y=Acc, group=SN, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(30, 100), clip = "on") +
  labs(x = "Prediction Error", y = "List 1 Correct (%)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 Source Memory (L1>D1; Con)") +
  theme_bw(base_size = 18) +
  theme(axis.title = element_text(face = "plain", size = 18, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        # panel.border=element_blank(),
        aspect.ratio = 1,
        plot.margin = margin(0.3, 0.3, 0.3, 0.3, "cm"))
ggpubr::ggarrange(p3.plot2.2.all.1.p3, p3.plot2.2.exp.1, p3.plot2.2.con.1, ncol=3, 
          labels = c("A) All Group", "B) Experimental", "C) Control"),
          hjust = -0.1, vjust=1, font.label = list(size = 16)) 


집단과 예측 오류 조건을 요인으로한 2 X 3 혼합 요인 분산분석을 수행하였다.

p3.Acc.all.aov.1 <- aov_ez(id = "SN", dv = "Acc", data = p3.Acc.long.all.1, between = "Btw", within = "cPE")
anova(p3.Acc.all.aov.1, es = "pes") %>% kable(digits=3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 294.269 1.477 0.042 0.233
cPE 1.903 64.685 108.204 1.091 0.031 0.339
Btw:cPE 1.903 64.685 108.204 0.064 0.002 0.931

분석 결과, 모든 효과가 유의하지 않았다.


분산 분석 결과를 보충하기 위해, 집단과 예측 오류 조건에 따른 List 1 Correct에 대하여 일반화 선형 혼합 효과 모형을 검증하였다. 집단, 예측 오류 조건을 고정 효과로 하고 참가자와 자극의 무선 효과를 포함한 p3.L1.src.corr.Model을 구성하였다.

p3.L1.src.corr <- read.csv("MemUdt_PE_d3t6_m.csv", header = T) 
p3.L1.src.corr <- p3.L1.src.corr %>% filter(cSrc == 1)
p3.L1.src.corr$SN = factor(p3.L1.src.corr$SN); p3.L1.src.corr$Btw = factor(p3.L1.src.corr$Btw)
p3.L1.src.corr$cSrc = factor(p3.L1.src.corr$cSrc, labels=c("List_1"))
p3.L1.src.corr$cPE = factor(p3.L1.src.corr$cPE, levels=c(1,2,3), labels=c("pe1","pe2","pe3"))
p3.L1.src.corr$Resp <- factor(p3.L1.src.corr$Resp, levels=c(1,2,3), labels=c("Day_1", "Day_2", "New"))
p3.L1.src.corr$Correct <- as.numeric(p3.L1.src.corr$Corr==1)
p3.L1.src.corr$Int <- as.numeric(p3.L1.src.corr$Corr==3); p3.L1.src.corr$Err <- as.numeric(p3.L1.src.corr$Corr==2); 
p3.L1.src.corr$Incorr <- as.numeric(p3.L1.src.corr$Corr==0)
p3.L1.src.corr.exp <- p3.L1.src.corr %>% filter(Btw == 1)
p3.L1.src.corr.con <- p3.L1.src.corr %>% filter(Btw == 2)
(nc <- detectCores())
cl <- makeCluster(rep("localhost", nc))

p3.L1.src.corr.Model.1 <- afex::mixed(Correct ~ Btw*cPE + (1|SN) + (1|IMname),
                             p3.L1.src.corr, method = "LRT", cl = cl,
                             family=binomial(link="logit"),
                             control = glmerControl(optCtrl = list(maxfun = 1e6)))

save(p3.src.corr.Model.1, file="memudet_day3_L1src_corr.Rdata")
stopCluster(cl)
anova(p3.L1.src.corr.Model.1) %>% kable(digit=3)

분석 결과, 모든 효과가 유의하지 않았다.


2.2.1.3.3 목록 1 출처 혼동


Source Confusion에서 집단과 예측 오류 조건에 따른 평균과 표준편차를 계산하였다. 아래의 그래프에서 A는 전체 집단, B는 실험 집단, C는 통제 집단을 나타내며, 빨간 점은 평균, 빨간 리본은 95% 신뢰구간을 나타낸다.


## List 1 Source Confusion
# long format
p3.Err.long.all <- p3 %>% filter(cSrc == "List_1", cPE != "pe0") %>% group_by(SN, Btw, cPE) %>% 
  summarise(Error = mean(Err)*100) %>% ungroup()
p3.Err.wide.all <- p3.Err.long.all %>% spread(key = cPE, value = Error)
p3.Err.long.all <- gather(p3.Err.wide.all, cPE, Error, pe1:pe3, factor_key=TRUE)
p3.Err.long.all[is.na(p3.Err.long.all)] <- 0
p3.Err.long.all <- arrange(p3.Err.long.all, SN, Btw, Error)
p3.Err.long.exp <- p3.Err.long.all %>% filter(Btw==1)
p3.Err.long.con <- p3.Err.long.all %>% filter(Btw==2)

# wide format
p3.Err.swide.all <- p3.Err.long.all %>% spread(key = cPE, value = Error)
p3.Err.swide.exp <- p3.Err.swide.all %>% filter(Btw==1)
p3.Err.swide.con <- p3.Err.swide.all %>% filter(Btw==2)

# summary
p3.Err.g.all <- p3.Err.long.all %>%  group_by(Btw, cPE) %>% 
  summarise(Err.M = mean(Error), Err.SD = sd(Error)) %>% ungroup()
p3.Err.g.all$Err.se <- Rmisc::summarySEwithin(data = p3.Err.long.all, measurevar = "Error", 
                                              idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$se
p3.Err.g.all$Err.ci <- Rmisc::summarySEwithin(data = p3.Err.long.all, measurevar = "Error", 
                                              idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$ci
p3.Err.g.exp <- p3.Err.g.all %>% filter(Btw==1)
p3.Err.g.con <- p3.Err.g.all %>% filter(Btw==2)
p3.Err.g.all %>% kable(digits=2)
Btw cPE Err.M Err.SD Err.se Err.ci
1 pe1 23.89 12.38 1.81 3.82
1 pe2 19.26 10.20 2.05 4.33
1 pe3 20.74 9.81 1.97 4.15
2 pe1 27.78 13.48 2.32 4.90
2 pe2 22.59 12.81 2.41 5.09
2 pe3 21.48 8.26 2.11 4.44
## plot 
p3.Err.g.all.p3 <- p3.Err.g.all
p3.Err.g.all.p3$Btw <- factor(p3.Err.g.all.p3$Btw, labels=c("Experimental", "Control"))

p3.plot2.3.all.1.p3 <- ggplot(data=p3.Err.g.all.p3, 
                              aes(x=cPE, y=Err.M, ymin=Err.M-Err.ci, ymax=Err.M+Err.ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(0,70), clip = "on") +
  # scale_y_continuous(breaks = seq(0,80)) +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  labs(x = "Prediction Error", y = "Source Confusion (%)") +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.75, 0.85),
        legend.title = element_blank(),
        aspect.ratio = 1,
        legend.background = element_blank(),
        plot.margin = margin(0.3, 0.3, 0.3, 0.3, "cm"),
        legend.key = element_blank())
# p3.plot2.3.all.1.p3


p3.plot2.3.exp <- ggplot(p3.Err.g.exp, mapping=aes(x=cPE, y=Err.M, group=1)) + 
  geom_ribbon(aes(ymin=Err.M-Err.ci, ymax=Err.M+Err.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=Err.M, ymax=Err.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Err.long.exp, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=Error, group=SN, color=SN)) +
  geom_point(p3.Err.long.exp, mapping = aes(x=cPE, y=Error, group=SN, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(0, 80), clip = "on") +
  labs(x = "Prediction Error", y = "Source Confusion (%)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("Source Confusions (L1>D2; Exp)") +
  theme_bw(base_size = 18) +
  theme(axis.title = element_text(face = "plain", size = 18, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        aspect.ratio = 1,
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        # panel.border=element_blank(),
        plot.margin = margin(0.3, 0.3, 0.3, 0.3, "cm"))
p3.plot2.3.con <- ggplot(p3.Err.g.con, mapping=aes(x=cPE, y=Err.M, group=1)) + 
  geom_ribbon(aes(ymin=Err.M-Err.ci, ymax=Err.M+Err.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=Err.M, ymax=Err.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Err.long.con, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=Error, group=SN, color=SN)) +
  geom_point(p3.Err.long.con, mapping = aes(x=cPE, y=Error, group=SN, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(0, 80), clip = "on") +
  labs(x = "Prediction Error", y = "Source Confusion (%)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("Source Confusions (L1>D2; Con)") +
  theme_bw(base_size = 18) +
  theme(axis.title = element_text(face = "plain", size = 18, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        aspect.ratio = 1,
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        # panel.border=element_blank(),
        plot.margin = margin(0.3, 0.3, 0.3, 0.3, "cm"))
ggpubr::ggarrange(p3.plot2.3.all.1.p3, p3.plot2.3.exp, p3.plot2.3.con, ncol=3, 
          labels = c("A) All Group", "B) Experimental", "C) Control"),
          hjust = -0.1, vjust=1, font.label = list(size = 16)) 


Source Confusion이 집단, 예측 오류 조건에 따라 다른지 살펴보기 위해, 2 X 3 혼합 요인 분산분석을 수행하였다.


p3.Err.all.aov <- aov_ez(id = "SN", dv = "Error", data = p3.Err.long.all, between = "Btw", within = "cPE")
anova(p3.Err.all.aov, es = "pes") %>% kable(digits=3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 221.672 0.858 0.025 0.361
cPE 1.973 67.069 82.164 3.437 0.092 0.039
Btw:cPE 1.973 67.069 82.164 0.314 0.009 0.729

분석 결과, 예측 오류 조건의 주효과가 유의하였다.

p3.scnf.m1.all <- emmeans(p3.Err.all.aov, pairwise ~ cPE | Btw, type = "response")
p3.scnf.m1.all$contrasts %>% kable(digits=3)
contrast Btw estimate SE df t.ratio p.value
pe1 - pe2 1 4.630 3.116 34 1.486 0.310
pe1 - pe3 1 3.148 2.822 34 1.115 0.511
pe2 - pe3 1 -1.481 3.056 34 -0.485 0.879
pe1 - pe2 2 5.185 3.116 34 1.664 0.234
pe1 - pe3 2 6.296 2.822 34 2.231 0.080
pe2 - pe3 2 1.111 3.056 34 0.364 0.930
p3.scnf.m2.all <- emmeans(p3.Err.all.aov, pairwise ~ Btw | cPE, type = "response")
p3.scnf.m2.all$contrasts %>% kable(digits=3)
contrast cPE estimate SE df t.ratio p.value
1 - 2 pe1 -3.889 4.314 34 -0.901 0.374
1 - 2 pe2 -3.333 3.859 34 -0.864 0.394
1 - 2 pe3 -0.741 3.022 34 -0.245 0.808

사후 분석 결과, 모든 비교가 유의하지 않았다.


분산 분석 결과를 보충하기 위해, 집단과 예측 오류 조건에 따른 Source Confusion에 대하여 일반화 선형 혼합 효과 모형을 검증하였다. 집단과 예측 오류 조건을 고정 효과로 하고 참가자와 자극의 무선 효과를 포함한 p3.L1.src.corr.Model을 구성하였다.

p3.L1.src.corr <- read.csv("MemUdt_PE_d3t6_m.csv", header = T)
p3.L1.src.corr <- p3.L1.src.corr %>% filter(cSrc == 1)
p3.L1.src.corr$SN = factor(p3.L1.src.corr$SN); p3.L1.src.corr$Btw = factor(p3.L1.src.corr$Btw)
p3.L1.src.corr$cSrc = factor(p3.L1.src.corr$cSrc, labels=c("List_1"))
p3.L1.src.corr$cPE = factor(p3.L1.src.corr$cPE, levels=c(1,2,3), labels=c("pe1","pe2","pe3"))
p3.L1.src.corr$Resp <- factor(p3.L1.src.corr$Resp, levels=c(1,2,3), labels=c("Day_1", "Day_2", "New"))
p3.L1.src.corr$Correct <- as.numeric(p3.L1.src.corr$Corr==1)
p3.L1.src.corr$Int <- as.numeric(p3.L1.src.corr$Corr==3); p3.L1.src.corr$Err <- as.numeric(p3.L1.src.corr$Corr==2);
p3.L1.src.corr$Incorr <- as.numeric(p3.L1.src.corr$Corr==0)
p3.L1.src.corr.exp <- p3.L1.src.corr %>% filter(Btw == 1)
p3.L1.src.corr.con <- p3.L1.src.corr %>% filter(Btw == 2)
(nc <- detectCores())
cl <- makeCluster(rep("localhost", nc))

p3.L1.src.scnf.Model.1 <- afex::mixed(Err ~ Btw*cPE + (1|SN) + (1|IMname),
                             p3.L1.src.corr, method = "LRT", cl = cl,
                             family=binomial(link="logit"),
                             control = glmerControl(optCtrl = list(maxfun = 1e6)))

save(p3.L1.src.scnf.Model.1, file="memudet_day3_L1src_scnf.Rdata")
stopCluster(cl)
anova(p3.L1.src.scnf.Model.1) %>% kable(digit=3)

분석 결과, 예측 오류의 주효과가 유의하였다.

p3.L1.src.scnf.m1 <- emmeans(p3.L1.src.scnf.Model.1, pairwise ~ cPE | Btw , type = "response", adjust="bon") # adjust="bon"
p3.L1.src.scnf.m1$contrasts %>% kable(digits=3)

사후 분석 결과, 통제 집단에서 예측 오류가 수반되지 않았던 PE 1PE 3 보다 유의하게 높은 Source Confusion (L1>D2) 반응을 보였다.


2.2.1.3.4 목록 2 정확 반응


집단과 예측 오류 조건에 따른 List 2 Correct 차이를 분석하였다. 아래의 그래프에서 A는 전체 집단, B는 실험 집단, C는 통제 집단을 나타내며, 빨간 점은 평균, 오차 막대는 95% 신뢰구간을 표시한다.


## List 2 Correct Source Memory
# long format
p3.Acc.long.all.2 <- p3 %>% filter(cSrc == "List_2", cPE != "pe0") %>% group_by(SN, Btw, cPE) %>% 
  summarise(Acc = mean(Correct)*100) %>% ungroup()
p3.Acc.long.exp.2 <- p3.Acc.long.all.2 %>% filter(Btw==1)
p3.Acc.long.con.2 <- p3.Acc.long.all.2 %>% filter(Btw==2)

# wide format
p3.Acc.swide.all.2 <- p3.Acc.long.all.2 %>% spread(key = cPE, value = Acc)
p3.Acc.swide.exp.2 <- p3.Acc.swide.all.2 %>% filter(Btw==1)
p3.Acc.swide.con.2 <- p3.Acc.swide.all.2 %>% filter(Btw==2)

# summary
p3.Acc.g.all.2 <- p3.Acc.long.all.2 %>%  group_by(Btw, cPE) %>% 
  summarise(Acc.M = mean(Acc), Acc.SD = sd(Acc)) %>% ungroup() 
p3.Acc.g.all.2$Acc.se <- Rmisc::summarySEwithin(data = p3.Acc.long.all.2, measurevar = "Acc", 
                                                idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$se
p3.Acc.g.all.2$Acc.ci <- Rmisc::summarySEwithin(data = p3.Acc.long.all.2, measurevar = "Acc", 
                                                idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$ci
p3.Acc.g.exp.2 <- p3.Acc.g.all.2 %>% filter(Btw==1)
p3.Acc.g.con.2 <- p3.Acc.g.all.2 %>% filter(Btw==2)
p3.Acc.g.all.2 %>% kable(digits=2)
Btw cPE Acc.M Acc.SD Acc.se Acc.ci
1 pe1 71.11 10.66 1.62 3.42
1 pe2 61.48 13.59 1.43 3.01
1 pe3 65.56 16.57 1.74 3.68
2 pe1 71.67 13.49 2.27 4.79
2 pe2 70.56 13.15 2.12 4.48
2 pe3 69.63 12.41 2.12 4.48
## plot
p3.Acc.g.all.2.p3 <- p3.Acc.g.all.2
p3.Acc.g.all.2.p3$Btw <- factor(p3.Acc.g.all.2.p3$Btw, labels=c("Experimental", "Control"))

p3.plot2.2.all.2.p3 <- ggplot(data=p3.Acc.g.all.2.p3, 
                              aes(x=cPE, y=Acc.M, ymin=Acc.M-Acc.ci, ymax=Acc.M+Acc.ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(40,100), clip = "on") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # scale_y_continuous(breaks = seq(0,80)) +
  labs(x = "Prediction Error", y = "List 2 Correct (%)") +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.75, 0.25),
        legend.title = element_blank(),
        aspect.ratio = 1,
        legend.background = element_blank(),
        plot.margin = margin(0.3, 0.3, 0.3, 0.3, "cm"),
        legend.key = element_blank())
# p3.plot2.2.all.2.p3
p3.plot2.2.exp.2 <- ggplot(p3.Acc.g.exp.2, mapping=aes(x=cPE, y=Acc.M, group=1)) + 
  geom_ribbon(aes(ymin=Acc.M-Acc.ci, ymax=Acc.M+Acc.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=Acc.M, ymax=Acc.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.long.exp.2, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=Acc, group=SN, color=SN)) +
  geom_point(p3.Acc.long.exp.2, mapping = aes(x=cPE, y=Acc, group=SN, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(30, 100), clip = "on") +
  labs(x = "Prediction Error", y = "List 2 Correct (%)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 2 Source Memory (L2>D2; Exp)") +
  theme_bw(base_size = 18) +
  theme(axis.title = element_text(face = "plain", size = 18, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        aspect.ratio = 1,
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        # panel.border=element_blank(),
        plot.margin = margin(0.3, 0.3, 0.3, 0.3, "cm"))
p3.plot2.2.con.2 <- ggplot(p3.Acc.g.con.2, mapping=aes(x=cPE, y=Acc.M, group=1)) + 
  geom_ribbon(aes(ymin=Acc.M-Acc.ci, ymax=Acc.M+Acc.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=Acc.M, ymax=Acc.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.long.con.2, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=Acc, group=SN, color=SN)) +
  geom_point(p3.Acc.long.con.2, mapping = aes(x=cPE, y=Acc, group=SN, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(30, 100), clip = "on") +
  labs(x = "Prediction Error", y = "List 2 Correct (%)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 2 Source Memory (L2>D2; Con)") +
  theme_bw(base_size = 18) +
  theme(axis.title = element_text(face = "plain", size = 18, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        aspect.ratio = 1,
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        # panel.border=element_blank(),
        plot.margin = margin(0.3, 0.3, 0.3, 0.3, "cm"))
ggpubr::ggarrange(p3.plot2.2.all.2.p3, p3.plot2.2.exp.2, p3.plot2.2.con.2, ncol=3, 
          labels = c("A) All Group", "B) Experimental", "C) Control"),
          hjust = -0.1, vjust=1, font.label = list(size = 16)) 


List 2 Correct에 대하여 집단과 예측 오류 조건을 요인으로한 2 X 3 혼합 요인 분산분석을 수행하였다.


p3.Acc2.all.aov <- aov_ez(id = "SN", dv = "Acc", data = p3.Acc.long.all.2, between = "Btw", within = "cPE")
anova(p3.Acc2.all.aov, es = "pes") %>% kable(digits=3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 393.343 1.432 0.040 0.240
cPE 1.978 67.256 74.606 3.718 0.099 0.030
Btw:cPE 1.978 67.256 74.606 2.235 0.062 0.115

분석 결과, 예측 오류의 주효과가 유의하였다.

p3.Acc2.m1.all <- emmeans(p3.Acc2.all.aov, pairwise ~ cPE | Btw, type = "response")
p3.Acc2.m1.all$contrasts %>% kable(digits = 3)
contrast Btw estimate SE df t.ratio p.value
pe1 - pe2 1 9.630 2.813 34 3.424 0.005
pe1 - pe3 1 5.556 3.008 34 1.847 0.170
pe2 - pe3 1 -4.074 2.764 34 -1.474 0.316
pe1 - pe2 2 1.111 2.813 34 0.395 0.918
pe1 - pe3 2 2.037 3.008 34 0.677 0.778
pe2 - pe3 2 0.926 2.764 34 0.335 0.940
p3.Acc2.m1.all.2 <- emmeans(p3.Acc2.all.aov, pairwise ~ Btw | cPE, type = "response")
p3.Acc2.m1.all.2$contrasts %>% kable(digits = 3)
contrast cPE estimate SE df t.ratio p.value
1 - 2 pe1 -0.556 4.053 34 -0.137 0.892
1 - 2 pe2 -9.074 4.456 34 -2.036 0.050
1 - 2 pe3 -4.074 4.880 34 -0.835 0.410

사후 분석 결과, 실험 집단에서 PE 1 조건이 PE 2 조건보다 유의하게 높은 List 2 Correct 수준을 보이는 것으로 나타났다. 각 예측 오류 조건에서 두 집단 차이를 살펴본 결과, PE 2 조건에서 통제 집단실험 집단보다 우수한 것으로 나타났다.


분산 분석 결과를 보충하기 위하여, 집단과 예측 오류를 고정 효과로 하고 참가자와 자극을 무선 효과로 설정한 일반화 선형 혼합 모형을 검증하였다.

p3.L2.src.corr <- read.csv("MemUdt_PE_d3t6_m.csv", header = T) 
p3.L2.src.corr <- p3.L2.src.corr %>% filter(cSrc == 2)
p3.L2.src.corr$SN = factor(p3.L2.src.corr$SN); p3.L2.src.corr$Btw = factor(p3.L2.src.corr$Btw)
p3.L2.src.corr$cSrc = factor(p3.L2.src.corr$cSrc, labels=c("List_2"))
p3.L2.src.corr$cPE = factor(p3.L2.src.corr$cPE, levels=c(1,2,3), labels=c("pe1","pe2","pe3"))
p3.L2.src.corr$Resp <- factor(p3.L2.src.corr$Resp, levels=c(1,2,3), labels=c("Day_1", "Day_2", "New"))
p3.L2.src.corr$Correct <- as.numeric(p3.L2.src.corr$Corr==1)
p3.L2.src.corr$Int <- as.numeric(p3.L2.src.corr$Corr==3); p3.L2.src.corr$Err <- as.numeric(p3.L2.src.corr$Corr==2); 
p3.L2.src.corr$Incorr <- as.numeric(p3.L2.src.corr$Corr==0)
p3.L2.src.corr.exp <- p3.L2.src.corr %>% filter(Btw == 1)
p3.L2.src.corr.con <- p3.L2.src.corr %>% filter(Btw == 2)
(nc <- detectCores())
cl <- makeCluster(rep("localhost", nc))

p3.L2.src.corr.Model.1 <- afex::mixed(Correct ~ Btw*cPE + (1|SN), 
                               p3.L2.src.corr, method = "LRT", cl = cl, 
                               family=binomial(link="logit"),
                               control = glmerControl(optCtrl = list(maxfun = 1e6)))

p3.L2.src.corr.Model.2 <- afex::mixed(Correct ~ Btw*cPE + (1|SN) + (1|IMname), 
                               p3.L2.src.corr, method = "LRT", cl = cl, 
                               family=binomial(link="logit"),
                               control = glmerControl(optCtrl = list(maxfun = 1e6)))

save(p3.L2.src.corr.Model.1, p3.L2.src.corr.Model.2, file="memudet_day3_Acc2_afex.Rdata")

stopCluster(cl)

p3.L2.src.corr.Model.2는 과적합되어 분석에서 제외하였다.

anova(p3.L2.src.corr.Model.1) %>% kable(digits=3)

p1.Acc.Model.1 분석 결과, 예측 오류 조건의 주효과는 유의하였다.

p3.acc2.m3.all <- emmeans(p3.L2.src.corr.Model.1, pairwise ~ cPE | Btw, type = "response")
p3.acc2.m3.all$contrasts %>% kable(digits=3)

사후 분석 결과, 실험 집단에서 PE 1 조건이 PE 2 조건 보다 유의하게 높은 List 2 Correct (L2>D2) 수준을 보이는 것으로 나타났다.


2.2.1.3.5 목록 2 침범


Intrusion의 집단과 예측 오류 조건에 따른 평균과 표준편차를 계산하였다. 아래의 그래프에서 A는 전체 집단, B는 실험 집단, C는 통제 집단을 나타내며, 빨간 점은 평균, 빨간 리본은 95% 신뢰구간을 나타낸다.


## List 2 Intrusion
# long format
p3.Intru.long.all <- p3 %>% filter(cSrc == "List_2", cPE != "pe0") %>% group_by(SN, Btw, cPE) %>%
  summarise(Intrusion = mean(Int)*100) %>% 
  ungroup()
p3.Intru.long.exp <- p3.Intru.long.all %>% filter(Btw==1)
p3.Intru.long.con <- p3.Intru.long.all %>% filter(Btw==2)

# wide format
p3.Intru.swide.all <- p3.Intru.long.all %>% spread(key = cPE, value = Intrusion)
p3.Intru.swide.exp <- p3.Intru.swide.all %>% filter(Btw==1)
p3.Intru.swide.con <- p3.Intru.swide.all %>% filter(Btw==2)

# summary
p3.Intru.g.all <- p3.Intru.long.all %>%  group_by(Btw, cPE) %>% 
  summarise(Intru.M = mean(Intrusion), Intru.SD = sd(Intrusion)) %>% ungroup() 
p3.Intru.g.all$Intru.se <- Rmisc::summarySEwithin(data = p3.Intru.long.all, measurevar = "Intrusion", 
                                                  idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$se
p3.Intru.g.all$Intru.ci <- Rmisc::summarySEwithin(data = p3.Intru.long.all, measurevar = "Intrusion", 
                                                  idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$ci
p3.Intru.g.exp <- p3.Intru.g.all %>% filter(Btw==1)
p3.Intru.g.con <- p3.Intru.g.all %>% filter(Btw==2)
p3.Intru.g.all %>% kable(digits=2)
Btw cPE Intru.M Intru.SD Intru.se Intru.ci
1 pe1 26.67 9.57 1.60 3.37
1 pe2 36.48 13.79 1.53 3.24
1 pe3 32.04 15.56 1.81 3.82
2 pe1 25.19 13.05 2.32 4.89
2 pe2 24.26 10.71 2.11 4.44
2 pe3 27.78 12.21 2.06 4.34
## plot
p3.Intru.g.all.p3 <- p3.Intru.g.all
p3.Intru.g.all.p3$Btw <- factor(p3.Intru.g.all.p3$Btw, labels=c("Experimental", "Control"))
p3.plot2.1.all.p3 <- ggplot(data=p3.Intru.g.all.p3, 
                            aes(x=cPE, y=Intru.M, ymin=Intru.M-Intru.ci, ymax=Intru.M+Intru.ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(0,70), clip = "on") +
  # scale_y_continuous(breaks = seq(0,80)) +
  labs(x = "Prediction Error", y = "Intrusion (%)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.75, 0.85),
        legend.title = element_blank(),
        aspect.ratio = 1,
        legend.background = element_blank(),
        plot.margin = margin(0.3, 0.3, 0.3, 0.3, "cm"),
        legend.key = element_blank())
# p3.plot2.1.all.p3

p3.plot2.1.exp <- ggplot(p3.Intru.g.exp, mapping=aes(x=cPE, y=Intru.M, group=1)) + 
  geom_ribbon(aes(ymin=Intru.M-Intru.ci, ymax=Intru.M+Intru.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=Intru.M, ymax=Intru.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Intru.long.exp, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=Intrusion, group=SN, color=SN)) +
  geom_point(p3.Intru.long.exp, mapping = aes(x=cPE, y=Intrusion, group=SN, color = SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(0, 80), clip = "on") +
  labs(x = "Prediction Error", y = "Intrusion (%)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("Intrusion (L2>D1; Exp)") +
  theme_bw(base_size = 18) +
  theme(axis.title = element_text(face = "plain", size = 18, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        aspect.ratio = 1,
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        # panel.border=element_blank(),
        plot.margin = margin(0.3, 0.3, 0.3, 0.3, "cm"))
p3.plot2.1.con <- ggplot(p3.Intru.g.con, mapping=aes(x=cPE, y=Intru.M, group=1)) + 
  geom_ribbon(aes(ymin=Intru.M-Intru.ci, ymax=Intru.M+Intru.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=Intru.M, ymax=Intru.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Intru.long.con, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=Intrusion, group=SN, color=SN)) +
  geom_point(p3.Intru.long.con, mapping = aes(x=cPE, y=Intrusion, group=SN, color = SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(0, 80), clip = "on") +
  labs(x = "Prediction Error", y = "Intrusion (%)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("Intrusion (L2>D1; Con)") +
  theme_bw(base_size = 18) +
  theme(axis.title = element_text(face = "plain", size = 18, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        aspect.ratio = 1,
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        # panel.border=element_blank(),
        plot.margin = margin(0.3, 0.3, 0.3, 0.3, "cm"))
ggpubr::ggarrange(p3.plot2.1.all.p3, p3.plot2.1.exp, p3.plot2.1.con, ncol=3, 
          labels = c("A) All Group", "B) Experimental", "C) Control"),
          hjust = -0.1, vjust=1, font.label = list(size = 16))


Intrusion에 대하여 집단과 예측 오류 조건을 요인으로 하는 2 X 3 혼합 요인 분산분석으로 수행하였다.


p3.Intru.all.aov <- aov_ez(id = "SN", dv = "Intrusion", data = p3.Intru.long.all, between = "Btw", within = "cPE")
anova(p3.Intru.all.aov, es = "pes") %>% kable(digits=3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 328.861 2.944 0.080 0.095
cPE 1.984 67.457 75.597 2.866 0.078 0.064
Btw:cPE 1.984 67.457 75.597 3.730 0.099 0.029

분석 결과, 집단과 예측 오류 조건의 상호 작용은 유의하였다.

p3.Intru.m1.all <- emmeans(p3.Intru.all.aov, pairwise ~ cPE | Btw, type = "response")
p3.Intru.m1.all$contrasts %>% kable(digits=3)
contrast Btw estimate SE df t.ratio p.value
pe1 - pe2 1 -9.815 2.866 34 -3.424 0.005
pe1 - pe3 1 -5.370 3.005 34 -1.787 0.189
pe2 - pe3 1 4.444 2.784 34 1.596 0.261
pe1 - pe2 2 0.926 2.866 34 0.323 0.944
pe1 - pe3 2 -2.593 3.005 34 -0.863 0.667
pe2 - pe3 2 -3.519 2.784 34 -1.264 0.425
p3.Intru.m2.all <- emmeans(p3.Intru.all.aov, pairwise ~ Btw | cPE, type = "response")
p3.Intru.m2.all$contrasts %>% kable(digits=3)
contrast cPE estimate SE df t.ratio p.value
1 - 2 pe1 1.481 3.813 34 0.389 0.700
1 - 2 pe2 12.222 4.116 34 2.969 0.005
1 - 2 pe3 4.259 4.661 34 0.914 0.367

분석 결과, 실험 집단에서 PE 1PE 2보다 유의하게 낮은 Intrusion 반응을 보였다. PE 1PE 3, PE 2PE 3 간의 차이는 유의하지 않았다. 통제 집단에서는 모든 비교가 유의하지 않았다. 또한 PE 2에서 실험 집단통제 집단보다 유의하게 높은 Intrusion 반응을 보였다.


분산분석 결과를 보충하기 위해, 집단과 예측 오류를 고정 효과로 하고 참가자와 자극을 무선 효과로 설정한 일반화 선형 혼합 모형 p3.Int.Model을 검증하였다.

p3.glmm.int <- read.csv("MemUdt_PE_d3t6_m.csv", header = T) 
p3.glmm.int <- p3.glmm.int %>% filter(cSrc == 2)
p3.glmm.int$SN = factor(p3.glmm.int$SN); p3.glmm.int$Btw = factor(p3.glmm.int$Btw)
p3.glmm.int$cPE = factor(p3.glmm.int$cPE, levels=c(1,2,3), labels=c("pe1","pe2","pe3"))
p3.glmm.int$RT <- p3.glmm.int$RT*1000; p3.glmm.int$Correct <- as.numeric(p3.glmm.int$Corr==1)
p3.glmm.int$Int <- as.numeric(p3.glmm.int$Corr==3);
p3.glmm.int.exp <- p3.glmm.int %>% filter(Btw == 1)
p3.glmm.int.con <- p3.glmm.int %>% filter(Btw == 2)
(nc <- detectCores())
cl <- makeCluster(rep("localhost", nc))

p3.Int.Model.1 <- afex::mixed(Int ~ Btw*cPE + (1|SN) + (1|IMname), 
                               p3.glmm.int, method = "LRT", cl = cl, 
                               family=binomial(link="logit"),
                               control = glmerControl(optCtrl = list(maxfun = 1e6)))

save(p3.Int.Model.1, file="memudet_day3_Int_afex.Rdata")

stopCluster(cl)
anova(p3.Int.Model.1) %>% kable(digits=3)

분석 결과, 예측 오류의 주효과, 집단과 예측 오류 간의 상호작용이 유의하였다. 집단 내에서의 예측 오류 효과와 각 예측 오류 조건에서의 집단 간 사후분석을 수행하였다.

p3.Intru.m3.all <- emmeans(p3.Int.Model.1, pairwise ~ cPE | Btw, type = "response")
p3.Intru.m3.all$contrasts %>% kable(digits=3)

p3.Intru.m4.all <- emmeans(p3.Int.Model.1, pairwise ~ Btw | cPE, type = "response")
p3.Intru.m4.all$contrasts %>% kable(digits=4)

# plot(p3.Intru.m3.all, horizontal=F, comparison=T)

분석 결과, 실험 집단에서 PE 1PE 2보다 유의하게 낮은 Intrusion 반응을 보였다. PE 1PE 3, PE 2PE 3 간의 차이는 유의하지 않았다. 통제 집단에서는 모든 비교가 유의하지 않았다. 또한 PE 2에서 실험 집단통제 집단보다 유의하게 높은 Intrusion 반응을 보였다.


2.2.1.3.6 기억 갱신 점수


집단과 예측 오류 조건에 따른 기억 갱신 점수(Updating Score)를 살펴보았다. 기억 갱신 점수(Updating Score)IntrusionSource Confusion의 차이로, 출처 기억 반응에서 IntrusionSource Confusion간의 비대칭적 반응 패턴을 반영하기 위해 구성하였다. 양수의 값은 IntrusionSource Confusion 보다 높은 경우를 나타낸다. 각 집단의 참가자별로 US의 평균과 표준편차를 계산하였다. 아래의 그래프에서 A는 전체 집단, B는 실험 집단, C는 통제 집단을 나타내며, 빨간 점은 평균, 빨간 리본은 95% 신뢰구간을 나타낸다.


## Updating Score
# long format
p3.us <- merge(p3.Intru.long.all, p3.Err.long.all, key=c(SN,cPE))
p3.us <- arrange(p3.us, SN, Btw, cPE)
p3.US.long.all <- p3.us %>% group_by(SN, Btw, cPE) %>% 
  summarise(US = (Intrusion - Error)) %>% ungroup()
p3.US.long.exp <- p3.US.long.all %>% filter(Btw==1)
p3.US.long.con <- p3.US.long.all %>% filter(Btw==2)

# wide format
p3.US.swide.all <- p3.US.long.all %>% spread(key = cPE, value = US)
p3.US.swide.exp <- p3.US.swide.all %>% filter(Btw==1)
p3.US.swide.con <- p3.US.swide.all %>% filter(Btw==2)

# summary
p3.US.g.all <- p3.US.long.all %>%  group_by(Btw, cPE) %>% 
  summarise(US.M = mean(US), US.SD = sd(US)) %>% ungroup() 
p3.US.g.all$US.se <- Rmisc::summarySEwithin(data = p3.US.long.all, measurevar = "US", 
                                            idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$se
p3.US.g.all$US.ci <- Rmisc::summarySEwithin(data = p3.US.long.all, measurevar = "US", 
                                            idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$ci
p3.US.g.exp <- p3.US.g.all %>% filter(Btw==1)
p3.US.g.con <- p3.US.g.all %>% filter(Btw==2)
p3.US.g.all %>% kable(digits=2)
Btw cPE US.M US.SD US.se US.ci
1 pe1 2.78 16.46 2.89 6.11
1 pe2 17.22 18.48 2.91 6.13
1 pe3 11.30 19.64 3.06 6.46
2 pe1 -2.59 19.95 3.44 7.27
2 pe2 1.67 20.62 3.34 7.06
2 pe3 6.30 15.16 3.41 7.20
## plot
p3.US.g.all.p3 <- p3.US.g.all
p3.US.g.all.p3$Btw <- factor(p3.US.g.all.p3$Btw, labels=c("Experimental", "Control"))

p3.plot5.1.all.p3 <- ggplot(data=p3.US.g.all.p3, 
                            aes(x=cPE, y=US.M, ymin=US.M-US.ci, ymax=US.M+US.ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(-50,50), clip = "on") +
  # scale_y_continuous(breaks = seq(0,80)) +
  labs(x = "Prediction Error", y = "Updating Score") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.75, 0.20),
        legend.title = element_blank(),
        aspect.ratio = 1,
        legend.background = element_blank(),
        plot.margin = margin(0.3, 0.3, 0.3, 0.3, "cm"),
        legend.key = element_blank())
# p3.plot5.1.all.p3
p3.plot2.5.exp <- ggplot(p3.US.g.exp, mapping=aes(x=cPE, y=US.M, group=1)) + 
  geom_ribbon(aes(ymin=US.M-US.ci, ymax=US.M+US.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=US.M, ymax=US.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.US.long.exp, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=US, group=SN, color=SN)) +
  geom_point(p3.US.long.exp, mapping = aes(x=cPE, y=US, group=SN, color = SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(-50, +50), clip = "on") +
  labs(x = "Prediction Error", y = "Updating Score") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("Updating Score (Exp)") +
  theme_bw(base_size = 18) +
  theme(axis.title = element_text(face = "plain", size = 18, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        aspect.ratio = 1,
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        # panel.border=element_blank(),
        plot.margin = margin(0.3, 0.3, 0.3, 0.3, "cm"))
p3.plot2.5.con <- ggplot(p3.US.g.con, mapping=aes(x=cPE, y=US.M, group=1)) + 
  geom_ribbon(aes(ymin=US.M-US.ci, ymax=US.M+US.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=US.M, ymax=US.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.US.long.con, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=US, group=SN, color=SN)) +
  geom_point(p3.US.long.con, mapping = aes(x=cPE, y=US, group=SN, color = SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(-50, +50), clip = "on") +
  labs(x = "Prediction Error", y = "Updating Score") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("Updating Score (Con)") +
  theme_bw(base_size = 18) +
  theme(axis.title = element_text(face = "plain", size = 18, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        # panel.border=element_blank(),
        aspect.ratio = 1,
        plot.margin = margin(0.3, 0.3, 0.3, 0.3, "cm"))
ggpubr::ggarrange(p3.plot5.1.all.p3, p3.plot2.5.exp, p3.plot2.5.con, ncol=3, 
          labels = c("A) All Group", "B) Experimental", "C) Control"), 
          hjust = -0.1, vjust=1, font.label = list(size = 16))


각 집단과 예측 오류 조건에서의 US 차이를 살펴보기 위하여 2 X 3 혼합 요인 분산분석을 수행하였다.

p3.US.all.aov <- aov_ez(id = "SN", dv = "US", data = p3.US.long.all, between = "Btw", within = "cPE")
anova(p3.US.all.aov, es = "pes") %>% kable(digits=3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 614.657 3.281 0.088 0.079
cPE 1.997 67.897 205.839 4.777 0.123 0.011
Btw:cPE 1.997 67.897 205.839 1.571 0.044 0.215

분석 결과, 예측 오류의 주효과가 유의하였다. 집단과 예측 오류 간의 상호작용은 유의하지 않았다.

p3.US.m1.all <- emmeans(p3.US.all.aov, pairwise ~ cPE | Btw, type = "response")
p3.US.m1.all$contrasts %>% kable(digits = 3)
contrast Btw estimate SE df t.ratio p.value
pe1 - pe2 1 -14.444 4.694 34 -3.077 0.011
pe1 - pe3 1 -8.519 4.855 34 -1.754 0.200
pe2 - pe3 1 5.926 4.786 34 1.238 0.439
pe1 - pe2 2 -4.259 4.694 34 -0.907 0.639
pe1 - pe3 2 -8.889 4.855 34 -1.831 0.175
pe2 - pe3 2 -4.630 4.786 34 -0.967 0.602
p3.US.m2.all <- emmeans(p3.US.all.aov, pairwise ~ Btw | cPE, type = "response")
p3.US.m2.all$contrasts %>% kable(digits = 3)
contrast cPE estimate SE df t.ratio p.value
1 - 2 pe1 5.370 6.097 34 0.881 0.385
1 - 2 pe2 15.556 6.526 34 2.384 0.023
1 - 2 pe3 5.000 5.849 34 0.855 0.399
# plot(p3.US.m1.all, horizontal=F, comparison=T)
# plot(p3.US.m2.all, horizontal=F, comparison=T)

사후 분석 결과, 실험 집단에서 PE 1보다 PE 2가 유의하게 높은 US값을 보였다. 다른 차이는 유의하지 않았다. 또한 PE 2 조건에서 실험 집단통제 집단보다 유의하게 높은 US값을 보였다. 그러나 앞선 분산분석에서 집단과 예측 오류의 상호작용이 유의하지 않았다는 점을 고려할 필요가 있다.


분산 분석 결과를 보충하기 위해 Updating Score에 대한 예측 오류의 주효과를 고정 효과로 하고 참가자에 의한 무선 절편을 무선 효과로 포함한 일반 선형 혼합 모형을 검증하였다.

(nc <- detectCores())
cl <- makeCluster(rep("localhost", nc))
p3.US.long.all$cPE <- factor(p3.US.long.all$cPE)

p3.US.Model.1 <- afex::mixed(US ~ Btw*cPE + (1|SN), REML = FALSE,
                              p3.US.long.all, method = "LRT", cl = cl,
                              control = lmerControl(optCtrl = list(maxfun = 1e6)))

save(p3.US.Model.1, file="memudet_day3_US_afex.Rdata")

stopCluster(cl)
anova(p3.US.Model.1) %>% kable(digits=4)
Df Chisq Chi Df Pr(>Chisq)
Btw 7 3.3161 1 0.0686
cPE 6 9.4656 2 0.0088
Btw:cPE 6 3.2529 2 0.1966

p3.US.Model.1 분석 결과, 예측 오류의 주효과가 유의하였다. 집단 내에서의 예측 오류 효과와 각 예측 오류 조건에서의 집단 간 사후분석을 수행하였다.

p3.US.m3.all <- emmeans(p3.US.Model.1, pairwise ~ cPE | Btw, type = "response")
p3.US.m3.all$contrasts %>% kable(digits=3)
contrast Btw estimate SE df t.ratio p.value
pe1 - pe2 1 -14.444 4.779 76.235 -3.023 0.009
pe1 - pe3 1 -8.519 4.779 76.235 -1.783 0.182
pe2 - pe3 1 5.926 4.779 76.235 1.240 0.433
pe1 - pe2 2 -4.259 4.779 76.235 -0.891 0.647
pe1 - pe3 2 -8.889 4.779 76.235 -1.860 0.157
pe2 - pe3 2 -4.630 4.779 76.235 -0.969 0.599
p3.US.m4.all <- emmeans(p3.US.Model.1, pairwise ~ Btw | cPE, type = "response")
p3.US.m4.all$contrasts %>% kable(digits=3)
contrast cPE estimate SE df t.ratio p.value
1 - 2 pe1 5.370 6.164 86.749 0.871 0.386
1 - 2 pe2 15.556 6.164 86.749 2.524 0.013
1 - 2 pe3 5.000 6.164 86.749 0.811 0.419

사후 분석 결과, 실헙 집단에서 예측 오류 조건 PE 2PE 1보다 유의하게 높은 US 정도를 보였다. 또한 PE 2조건에서 실험 집단통제집단보다 유의하게 높은 US을 보였다. 그러나 분산 분석과 마찬가지로, 집단과 예측 오류 간의 상호작용이 유의하지 않았다는 것을 고려할 필요가 있다.


2.2.1.4 예측 오류 정도와 기억 갱신 효과의 관계 - 모형 적합


앞선 분석에서는 예측 오류와 기억 갱신 간의 관계가 비단조적임을 나타내는 예측 오류 조건 간의 차이가 뚜렷하게 나타나지 않았다. 예측 오류 조건에 따른 출처 기억 반응 분석 결과, 실험 집단의 예측 오류 조건 PE 3PE 1, PE 2 간의 차이는 비단조적 예측과 같지 않았다. 하지만 수치적으로 볼 때, 실험 집단에서 예측 오류 조건에 따른 기억 갱신 효과의 평균은 Intrusion에서 PE 1 27.45%, PE 2 37.84%, PE 3 32.94%, Updating Score에서 PE 1 3.53, PE 2 18.82, PE 3 12.35로 비단조적인 패턴을 보였다. 이에 따라 기억 갱신의 패턴이 선형적 패턴과 비단조적 패턴 중 어느 것을 더 지지하는지 살펴보기 위하여 회귀 모형 적합을 수행하였다. 예측 오류 조건에 따른 Intrusion, Updating Score을 선형 모형 및 비선형 모형에 적합하고 두 집단 각각에서 어떤 모형이 기억 갱신 패턴에 적합한지 살펴보았다.


## Intrusion (L2>D1)
p3.Intru.long.all.fit <- p3.Intru.long.all
p3.Intru.long.all.fit$cPEn <- as.numeric(p3.Intru.long.all$cPE)
p3.Intru.long.exp.fit <- p3.Intru.long.all.fit %>% filter(Btw==1)
p3.Intru.long.con.fit <- p3.Intru.long.all.fit %>% filter(Btw==2)

## Updating Score (Intrusion - Source Confusion)
p3.US.long.all.fit <- p3.US.long.all
p3.US.long.all.fit$cPEn <- as.numeric(p3.US.long.all$cPE)
p3.US.long.exp.fit <- p3.US.long.all.fit %>% filter(Btw==1)
p3.US.long.con.fit <- p3.US.long.all.fit %>% filter(Btw==2)

먼저 각 집단 참가자들의 Intrusion (L2>D1)의 비율에 대하여 참가자에 의한 무선효과를 고려한 혼합 모형을 구성하였다. 혼합 모형은 각 집단에서 예측 오류와 Intrusion (L2>D1)의 비율 간의 선형 관계를 가정한 선형 혼합 모형 lin.int.exp.model, lin.int.con.model과 비단조적 관계를 가정한 quad.int.exp.model,quad.int.con.model로 구분되었다. 이어서 각 집단에서 어떤 모형이 Intrusion (L2>D1) 비율과 예측 오류 조건 간의 관계를 더 잘 설명하는지 모형 간 비교를 수행하였다.

# experimental group
lin.int.exp.model <- lmer(Intrusion ~ cPEn + (1|SN), p3.Intru.long.exp.fit, 
                          control = lmerControl(optCtrl = list(maxfun = 1e6)), REML=FALSE)
quad.int.exp.model <- lmer(Intrusion ~ poly(cPEn, 2) + (1|SN), p3.Intru.long.exp.fit, 
                           control = lmerControl(optCtrl = list(maxfun = 1e6)), REML=FALSE)

# control group
lin.int.con.model <- lmer(Intrusion ~ cPEn + (1|SN), p3.Intru.long.con.fit, 
                          control = lmerControl(optCtrl = list(maxfun = 1e6)), REML=FALSE)
quad.int.con.model <- lmer(Intrusion ~ poly(cPEn, 2) + (1|SN), p3.Intru.long.con.fit, 
                           control = lmerControl(optCtrl = list(maxfun = 1e6)), REML=FALSE)

실험 집단에서 각 모형을 분석한 결과는 아래와 같다.

anova(lin.int.exp.model, quad.int.exp.model) %>% kable(digit=3)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lin.int.exp.model 4 421.140 429.096 -206.570 413.140
quad.int.exp.model 5 413.017 422.962 -201.509 403.017 10.123 1 0.001
r2.int.exp <-cbind(MuMIn::r.squaredGLMM(lin.int.exp.model)[1,2], MuMIn::r.squaredGLMM(quad.int.exp.model)[1,2])
colnames(r2.int.exp)[c(1,2)] <- paste0(rep(c("Linear", "Quadratic")), colnames(r2.int.exp)[c(1,2)])
r2.int.exp %>% kable(digit = 2)
Linear Quadratic
R2c 0.62 0.71

통제 집단에서 각 모형을 분석한 결과는 아래와 같다.

anova(quad.int.con.model, lin.int.con.model) %>% kable(digit=3)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lin.int.con.model 4 421.644 429.600 -206.822 413.644
quad.int.con.model 5 422.988 432.933 -206.494 412.988 0.656 1 0.418
r2.int.con <-cbind(MuMIn::r.squaredGLMM(lin.int.con.model)[1,2], MuMIn::r.squaredGLMM(quad.int.con.model)[1,2])
colnames(r2.int.con)[c(1,2)] <- paste0(rep(c("Linear", "Quadratic")), colnames(r2.int.con)[c(1,2)])
r2.int.con %>% kable(digit = 2)
Linear Quadratic
R2c 0.34 0.36

분석 결과, 통제 집단과 달리 실험 집단에서의 Intrusion (L2>D1)과 예측 오류의 관계는 선형 모형 lin.int.exp.model 보다는 비단조적 모형 quad.int.exp.model에 더 가까운 것으로 나타났다.


참가자들의 Updating Score에 대하여 참가자에 의한 무선효과를 고려한 혼합 모형을 구성하였다. 모형은 각 집단에서 예측 오류와 Updating Score 값 간의 선형 관계를 가정한 선형 혼합 모형 lin.us.exp.model, lin.us.con.model과 비단조적 관계를 가정한 quad.us.exp.model,quad.Us.con.model로 구분되었다. 이어서 각 집단에서 어떤 모형이 Updating Score와 예측 오류 조건 간의 관계를 더 잘 설명하는지 모형 간 비교를 수행하였다.

# experimental group
lin.us.exp.model <- lmer(US ~ cPEn + (1|SN), p3.US.long.exp.fit, 
                          control = lmerControl(optCtrl = list(maxfun = 1e6)), REML=FALSE)
quad.us.exp.model <- lmer(US ~ poly(cPEn, 2) + (1|SN), p3.US.long.exp.fit, 
                           control = lmerControl(optCtrl = list(maxfun = 1e6)), REML=FALSE)

# control group
lin.us.con.model <- lmer(US ~ cPEn + (1|SN), p3.US.long.con.fit, 
                          control = lmerControl(optCtrl = list(maxfun = 1e6)), REML=FALSE)
quad.us.con.model <- lmer(US ~ poly(cPEn, 2) + (1|SN), p3.US.long.con.fit, 
                           control = lmerControl(optCtrl = list(maxfun = 1e6)), REML=FALSE)

실험 집단에서 각 모형을 분석한 결과는 아래와 같다.

anova(lin.us.exp.model, quad.us.exp.model) %>% kable(digit=3)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lin.us.exp.model 4 467.678 475.634 -229.839 459.678
quad.us.exp.model 5 462.904 472.849 -226.452 452.904 6.774 1 0.009
r2.us.exp <-cbind(MuMIn::r.squaredGLMM(lin.us.exp.model)[1,2], MuMIn::r.squaredGLMM(quad.us.exp.model)[1,2])
colnames(r2.us.exp)[c(1,2)] <- paste0(rep(c("Linear", "Quadratic")), colnames(r2.us.exp)[c(1,2)])
r2.us.exp %>% kable(digit = 2)
Linear Quadratic
R2c 0.42 0.52

통제 집단에서 각 모형을 분석한 결과는 아래와 같다.

anova(quad.us.con.model, lin.us.con.model) %>% kable(digit=3)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
lin.us.con.model 4 469.265 477.221 -230.633 461.265
quad.us.con.model 5 471.263 481.208 -230.632 461.263 0.002 1 0.966
r2.us.con <-cbind(MuMIn::r.squaredGLMM(lin.us.con.model)[1,2], MuMIn::r.squaredGLMM(quad.us.con.model)[1,2])
colnames(r2.us.con)[c(1,2)] <- paste0(rep(c("Linear", "Quadratic")), colnames(r2.us.con)[c(1,2)])
r2.us.con %>% kable(digit = 2)
Linear Quadratic
R2c 0.36 0.36

분석 결과, 통제 집단과 달리 실험 집단에서의 Updating Score와 예측 오류의 관계는 선형 모형 lin.us.exp.model 보다는 비단조적 모형 quad.us.exp.model에 더 가까운 것으로 나타났다.



2.2.2 Day 3 출처 기억 확신도


출처 반응 분석 결과를 보충하기 위해 출처 반응의 확신도를 분석하였다. 출처 반응 패턴에 대한 확신도를 분석할 때, 각 출처 반응에 포함되는 시행수가 너무 작을 경우 결과를 오도할 위험성이 있다. 따라서 분석에 앞서 각 출처 반응의 시행수를 살펴보았다. 아래의 표는 각 물체 목록에서의 출처 반응에 따른 시행수를 나타낸다. 목록 1목록 2의 물체를 New로 반응한 시행은 목록 1에서 4.29, 목록 2에서 3.32 시행으로 매우 적어 확신도 분석에 포함하지 않았다. 추가로 목록 3에 대한 출처 반응은 본 실험의 주요 고려 대상이 아니었으므로 분석에 포함하지 않았다.

# The number of trials per condition
p3 %>% group_by(SN, cSrc, Resp) %>% 
  summarise(NumTrial = length(Resp)) %>% 
  ungroup %>% 
  group_by(cSrc, Resp) %>%
  summarise(Avg = mean(NumTrial), 
            Med = median(NumTrial), 
            Min = min(NumTrial), 
            Max = max(NumTrial)) %>% 
  ungroup %>% kable(digit=4)
cSrc Resp Avg Med Min Max
List_1 Day_1 66.0833 65.5 49 83
List_1 Day_2 20.3611 20.5 6 34
List_1 New 4.2667 3.5 1 12
List_2 Day_1 25.8889 25.0 11 49
List_2 Day_2 61.5000 63.5 38 77
List_2 New 3.2414 3.0 1 11
List_3 Day_1 3.2857 2.0 1 12
List_3 Day_2 2.8750 1.0 1 20
List_3 New 86.8056 88.0 69 90

이에 따라 확신도 분석은 출처 기억 검사에서 학습한 것으로 반응한 경우(목록 1목록 2에서 정확하게 출처 반응을 한 List 1 Corrct, List 2 Corrct목록 1, 목록 2에서 출처를 서로 다르게 반응한 Source Confusion (L1>D2), Intrusion (L2>D1)에 대해서만 수행하였다.


2.2.2.1 출처 기억 확신도의 기술통계


# phase 1, subject-level, long-format
p3.AsyPtt.conf.long.all <- p3 %>% filter(cSrc != "List_3", Resp != "New") %>% group_by(SN, Btw, cSrc, Resp) %>%
  summarise(Conf = mean(Conf)) %>% ungroup()
p3.AsyPtt.conf.wide.all <- p3.AsyPtt.conf.long.all %>% spread(key = Resp, value = Conf)
p3.AsyPtt.conf.long.all <- gather(p3.AsyPtt.conf.wide.all, Resp, Conf, Day_1:Day_2, factor_key=TRUE)
p3.AsyPtt.conf.long.all[is.na(p3.AsyPtt.conf.long.all)] <- 0 
p3.AsyPtt.conf.long.all <- arrange(p3.AsyPtt.conf.long.all, SN, cSrc, Resp, Conf)
p3.AsyPtt.conf.long.exp <- p3.AsyPtt.conf.long.all %>% filter(Btw==1)
p3.AsyPtt.conf.long.con <- p3.AsyPtt.conf.long.all %>% filter(Btw==2)

# wide format
p3.AsyPtt.conf.swide.all <- p3.AsyPtt.conf.long.all %>% spread(key = Resp, value = Conf)
p3.AsyPtt.conf.swide.exp <- p3.AsyPtt.conf.swide.all %>% filter(Btw==1)
p3.AsyPtt.conf.swide.con <- p3.AsyPtt.conf.swide.all %>% filter(Btw==2)

# summary table
p3.AsyPtt.conf.g.all <- p3.AsyPtt.conf.long.all %>% group_by(Btw, cSrc, Resp) %>%
  summarise(Conf.M = mean(Conf), Conf.SD = sd(Conf)) %>% ungroup()
p3.AsyPtt.conf.g.all$Conf.se <- Rmisc::summarySEwithin(data = p3.AsyPtt.conf.long.all, measurevar = "Conf", idvar = "SN", 
                                                 betweenvars = "Btw", withinvars = c("cSrc","Resp"))$se
p3.AsyPtt.conf.g.all$Conf.ci <- Rmisc::summarySEwithin(data = p3.AsyPtt.conf.long.all, measurevar = "Conf", idvar = "SN", 
                                                 betweenvars = "Btw", withinvars = c("cSrc","Resp"))$ci
p3.AsyPtt.conf.g.exp <- p3.AsyPtt.conf.g.all %>% filter(Btw==1)
p3.AsyPtt.conf.g.con <- p3.AsyPtt.conf.g.all %>% filter(Btw==2)
p3.AsyPtt.conf.g.table <- p3.AsyPtt.conf.g.all %>% unite(cSrc_Resp, cSrc:Resp, remove=TRUE) %>% rename(Src_Resp = "cSrc_Resp")
p3.AsyPtt.conf.g.table$Src_Resp[p3.AsyPtt.conf.g.table$Src_Resp=='List_1_Day_1'] <- 'List 1 Correct'
p3.AsyPtt.conf.g.table$Src_Resp[p3.AsyPtt.conf.g.table$Src_Resp=='List_2_Day_2'] <- 'List 2 Correct'
p3.AsyPtt.conf.g.table$Src_Resp[p3.AsyPtt.conf.g.table$Src_Resp=='List_1_Day_2'] <- 'Source Confusion'
p3.AsyPtt.conf.g.table$Src_Resp[p3.AsyPtt.conf.g.table$Src_Resp=='List_2_Day_1'] <- 'Intrusion'
p3.AsyPtt.conf.g.table.1 <- p3.AsyPtt.conf.g.table %>% filter(Btw == 1) %>% arrange(c(1 ,3, 4, 2))
p3.AsyPtt.conf.g.table.2 <- p3.AsyPtt.conf.g.table %>% filter(Btw == 2) %>% arrange(c(1 ,3, 4, 2))
p3.AsyPtt.conf.g.table.all <- rbind(p3.AsyPtt.conf.g.table.1, p3.AsyPtt.conf.g.table.2)
p3.AsyPtt.conf.g.table.all %>% kable(digits=2)
Btw Src_Resp Conf.M Conf.SD Conf.se Conf.ci
1 List 1 Correct 3.32 0.44 0.07 0.14
1 List 2 Correct 3.18 0.46 0.04 0.08
1 Source Confusion 2.73 0.51 0.07 0.14
1 Intrusion 3.09 0.48 0.04 0.08
2 List 1 Correct 3.27 0.45 0.05 0.10
2 List 2 Correct 3.18 0.48 0.04 0.09
2 Source Confusion 2.76 0.48 0.06 0.12
2 Intrusion 3.06 0.49 0.05 0.10


두 물체 목록(목록 1, 목록 2)의 출처 반응에서 확신도가 어떻게 나타나는지 살펴보기 위해, 각 집단에서 물체 목록의 출처 반응 확신도 평균과 표준편차를 계산하였다. 그래프에서 A는 전체 집단의 물체 목록에 따른 출처 반응, B는 실험 집단, C는 통제집단을 나타낸다. A 그래프에서 x축은 물체 목록에 따른 출처 반응, y축은 반응 비율을 나타내며, 색은 각 집단을 나타낸다. B,C 그래프의 x축은 각 학습일에 학습한 물체 목록(첫째 날 학습 목록 1, 둘째 날 학습 목록 2, 새로운 물체 목록 3)을 나타내며, y축은 확신도 반응을 나타낸다. 각 집단에서 해당 물체 목록에 대한 출처 귀인 반응을 첫째 날 학습 Day 1, 둘째 날 학습 Day 2, 학습하지 않음 New로 구분하였다. 모든 그래프에서 빨간 점은 평균을 나타내며, 오차 막대는 95% 신뢰구간으로 표시하였다.


## plot
p3.conf.all.plot1 <- ggplot(data=p3.AsyPtt.conf.long.all, aes(x=Resp, y=Conf, fill=Btw)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .9, width = 0.8, colour="black", size = 1.02) +
  geom_pointrange(data=p3.AsyPtt.conf.g.all, aes(x = Resp, y = Conf.M, ymin = Conf.M-Conf.ci, ymax = Conf.M+Conf.ci),
                  position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
  facet_grid(.~cSrc, scales="free_x", 
             labeller = labeller(cSrc = c("List_1" = "List 1 (Day 1)","List_2" = "List 2 (Day 2)"))) +
  scale_x_discrete(labels=c("Day 1","Day 2")) +
  scale_fill_manual(values = c("#feb24c", "#91bfdb"),
                    labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Source Response by Object List", y = "Confidence Rating (1-4)", fill ="Group") +
  # ggtitle("Confidence Response") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        strip.text.x = element_text(face = "plain", size = 15, color = "black"),
        strip.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
        panel.spacing=unit(1, "lines"),
        plot.margin = margin(1, 0.3, 1, 0.3, "cm"), 
        # plot.title = element_text(hjust = 0.5),
        legend.position="top")
p3.conf.exp.plot1 <- ggplot(data=p3.AsyPtt.conf.long.exp, aes(x=cSrc, y=Conf, fill=Resp)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .7, width = .65, colour="black", size = 1.02) +
  geom_point(position=position_dodge(0.65), aes(x=cSrc, y=Conf, group=Resp, color = SN), size = 3, alpha = .4, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.conf.swide.exp,cSrc=="List_1"), inherit.aes = FALSE,
               aes(x=1-.16, y=filter(p3.AsyPtt.conf.swide.exp,cSrc=="List_1")$"Day_1",
                   xend=1+.16, yend=filter(p3.AsyPtt.conf.swide.exp,cSrc=="List_1")$"Day_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.conf.swide.exp,cSrc=="List_2"), inherit.aes = FALSE,
               aes(x=2-.16, y=filter(p3.AsyPtt.conf.swide.exp,cSrc=="List_2")$"Day_1",
                   xend=2+.16, yend=filter(p3.AsyPtt.conf.swide.exp,cSrc=="List_2")$"Day_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_pointrange(data=p3.AsyPtt.conf.g.exp, aes(x = cSrc, y = Conf.M, ymin = Conf.M-Conf.ci, ymax = Conf.M+Conf.ci),
                  position = position_dodge(0.65), color = "darkred", size = 1, show.legend = FALSE) +
  scale_fill_manual(values = c("#56b4e9", "#e69f00"),
                    labels = c("Day 1", "Day 2")) +
  scale_x_discrete(labels = c("List 1", "List 2")) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Object List", y = "Confidence Rating (1 - 4)", fill ="Attribution") +
  # ggtitle("Confidence Response (Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"),
        legend.position="top")
p3.conf.con.plot1 <- ggplot(data=p3.AsyPtt.conf.long.con, aes(x=cSrc, y=Conf, fill=Resp)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .7, width = .65, colour="black", size = 1.02) +
  geom_point(position=position_dodge(0.65), aes(x=cSrc, y=Conf, group=Resp, color = SN), size = 3, alpha = .4, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.conf.swide.con,cSrc=="List_1"), inherit.aes = FALSE,
               aes(x=1-.16, y=filter(p3.AsyPtt.conf.swide.con,cSrc=="List_1")$"Day_1",
                   xend=1+.16, yend=filter(p3.AsyPtt.conf.swide.con,cSrc=="List_1")$"Day_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.conf.swide.con,cSrc=="List_2"), inherit.aes = FALSE,
               aes(x=2-.16, y=filter(p3.AsyPtt.conf.swide.con,cSrc=="List_2")$"Day_1",
                   xend=2+.16, yend=filter(p3.AsyPtt.conf.swide.con,cSrc=="List_2")$"Day_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_pointrange(data=p3.AsyPtt.conf.g.con, aes(x = cSrc, y = Conf.M, ymin = Conf.M-Conf.ci, ymax = Conf.M+Conf.ci),
                  position = position_dodge(0.65), color = "darkred", size = 1, show.legend = FALSE) +
  scale_fill_manual(values = c("#56b4e9", "#e69f00"),
                    labels = c("Day 1", "Day 2")) +
  scale_x_discrete(labels = c("List 1", "List 2")) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Object List", y = "Confidence Rating (1 - 4)", fill ="Attribution") +
  # ggtitle("Confidence Response (Con)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"),
        legend.position="top")
ggpubr::ggarrange(p3.conf.all.plot1, labels = "A) All Group",
          ggpubr::ggarrange(p3.conf.exp.plot1, p3.conf.con.plot1, ncol = 2, labels = c("B) Experimental", "C) Control"),
                    hjust = -0.1, vjust=1, font.label = list(size = 16)), nrow = 2,
          hjust = -0.1, vjust=1, font.label = list(size = 16))


2.2.2.2 비대칭적 출처 반응에서의 확신도


집단과 출처 반응에 따른 확신도의 차이를 분석하였다. 집단과 출처 반응을 요인으로 한 2 X 4 혼합 요인 분산분석을 수행하였다.

# List 1 & 2 Confidence of Source Response
p3.AsyPtt.conf.long.all.1 <- p3.AsyPtt.conf.long.all %>% unite(cSrc_Resp, cSrc:Resp, remove=FALSE) %>% 
  rename(sResp = "cSrc_Resp") 
p3.AsyPtt.conf.long.all.1$sResp[p3.AsyPtt.conf.long.all.1$sResp=='List_1_Day_1'] <- 'List 1 Correct'
p3.AsyPtt.conf.long.all.1$sResp[p3.AsyPtt.conf.long.all.1$sResp=='List_2_Day_2'] <- 'List 2 Correct'
p3.AsyPtt.conf.long.all.1$sResp[p3.AsyPtt.conf.long.all.1$sResp=='List_1_Day_2'] <- 'Source Confusion'
p3.AsyPtt.conf.long.all.1$sResp[p3.AsyPtt.conf.long.all.1$sResp=='List_2_Day_1'] <- 'Intrusion'
p3.AsyPtt.conf.long.all.1$sResp <- factor(p3.AsyPtt.conf.long.all.1$sResp)

p3.AsyPtt.conf.g.all.1 <- p3.AsyPtt.conf.long.all.1 %>% group_by(Btw, sResp) %>%
  summarise(Conf.M = mean(Conf), Conf.SD = sd(Conf)) %>% ungroup()
p3.AsyPtt.conf.g.all.1$Conf.se <- Rmisc::summarySEwithin(data = p3.AsyPtt.conf.long.all.1, idvar = "SN",
                                                        measurevar = "Conf", betweenvars = "Btw", withinvars = "sResp")$se
p3.AsyPtt.conf.g.all.1$Conf.ci <- Rmisc::summarySEwithin(data = p3.AsyPtt.conf.long.all.1, idvar = "SN",
                                                        measurevar = "Conf", betweenvars = "Btw", withinvars = "sResp")$ci
p3.AsyPtt.conf.g.all.1 %>% arrange(c(4, 1, 2, 3, 8, 5, 6, 7)) %>%  kable(digit=2)
Btw sResp Conf.M Conf.SD Conf.se Conf.ci
1 List 1 Correct 3.32 0.44 0.07 0.15
1 List 2 Correct 3.18 0.46 0.04 0.08
1 Source Confusion 2.73 0.51 0.07 0.15
1 Intrusion 3.09 0.48 0.04 0.09
2 List 1 Correct 3.27 0.45 0.05 0.10
2 List 2 Correct 3.18 0.48 0.04 0.09
2 Source Confusion 2.76 0.48 0.06 0.13
2 Intrusion 3.06 0.49 0.05 0.10
p3.AsyPtt.conf.all.1.aov <- aov_ez(id = "SN", dv = "Conf", data = p3.AsyPtt.conf.long.all.1, between = "Btw", within = "sResp")
anova(p3.AsyPtt.conf.all.1.aov, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 0.741 0.005 0.000 0.944
sResp 2.115 71.898 0.074 39.287 0.536 0.000
Btw:sResp 2.115 71.898 0.074 0.238 0.007 0.801


분석 결과, 출처 반응의 주효과가 유의하였다. 집단의 주효과와 집단과 출처 반응의 상호작용은 유의하지 않았다.

# source response contrast
p3.AsyPtt.conf.m1.1.all <- emmeans(p3.AsyPtt.conf.all.1.aov, pairwise ~ sResp | Btw, type = "response")
p3.AsyPtt.conf.m1.1.all$contrasts %>% kable(digit=3)
contrast Btw estimate SE df t.ratio p.value
Intrusion - List.1.Correct 1 -0.238 0.061 34 -3.916 0.002
Intrusion - List.2.Correct 1 -0.093 0.066 34 -1.397 0.510
Intrusion - Source.Confusion 1 0.360 0.083 34 4.357 0.001
List.1.Correct - List.2.Correct 1 0.146 0.071 34 2.041 0.193
List.1.Correct - Source.Confusion 1 0.599 0.102 34 5.858 0.000
List.2.Correct - Source.Confusion 1 0.453 0.067 34 6.794 0.000
Intrusion - List.1.Correct 2 -0.206 0.061 34 -3.377 0.010
Intrusion - List.2.Correct 2 -0.120 0.066 34 -1.801 0.290
Intrusion - Source.Confusion 2 0.306 0.083 34 3.702 0.004
List.1.Correct - List.2.Correct 2 0.086 0.071 34 1.205 0.628
List.1.Correct - Source.Confusion 2 0.512 0.102 34 5.007 0.000
List.2.Correct - Source.Confusion 2 0.426 0.067 34 6.384 0.000


각 집단에서 출처 반응에 따른 사후 분석을 수행한 결과, 실험 집단에서 List 1 Correct (L1>D1)Source Confusion (L1>D2), Intrusion (L2>D1) 보다 유의하게 높은 확신도를 보였다. 또한 Source Confusion (L1>D2)보다는 Intrusion (L2>D1), List 2 Correct (L2>D2)이 더 높은 확신도를 보였다. List 1 Correct (L1>D1)List 2 Correct (L2>D2), Intrusion (L2>D1)List 2 Correct (L2>D2) 간의 차이는 유의하지 않았다.
통제 집단에서는 List 1 Correct (L1>D1)Source Confusion (L1>D2) 보다 유의하게 높은 확신도를 보였다. 또한 Source Confusion (L1>D2)보다는 Intrusion (L2>D1), List 2 Correct (L2>D2)이 더 높은 확신도를 보였다. 이 외에, List 1 Correct (L1>D1)Intrusion (L2>D1), List 2 Correct (L2>D2)의 차이, Intrusion (L2>D1)List 2 Correct (L2>D2)` 간의 차이는 유의하지 않았다.


2.2.2.3 예측 오류 조건에 따른 출처 기억 확신도


집단, 예측 오류 조건에 따른 출처 반응 확신도를 분석하였다. 출처 반응 패턴 분석과 유사하게, 네 가지 주요 종속 변인, List 1 Correct (L1>D1), List 2 Correct (L2>D2), Source Confusion (L1>D2), Intrusion (L2>D1)에서 예측 오류 조건과 집단에 의한 확신도 차이를 살펴보았다.


2.2.2.3.1 예측 오류 조건에 따른 출처 기억 확신도 패턴


먼저 각 예측 오류 조건에서 출처 반응 패턴에 따른 출처 기억 확신도를 살펴보았다.

p3.AsyPtt.conf.long.pe <- p3 %>%  group_by(SN, Btw, cSrc, cPE, Resp) %>%
  summarise(Conf = mean(Conf)) %>% ungroup()
p3.AsyPtt.conf.wide.pe <- p3.AsyPtt.conf.long.pe %>% spread(key = Resp, value = Conf)
p3.AsyPtt.conf.long.pe <- gather(p3.AsyPtt.conf.wide.pe, Resp, Conf, Day_1:New, factor_key=TRUE)
p3.AsyPtt.conf.long.pe[is.na(p3.AsyPtt.conf.long.pe)] <- 0 
p3.AsyPtt.conf.long.pe <- arrange(p3.AsyPtt.conf.long.pe, SN, cSrc, cPE, Resp, Conf)
p3.AsyPtt.conf.long.pe <- p3.AsyPtt.conf.long.pe %>% filter(cSrc != "List_3", Resp != "New", cPE!="pe0")
p3.AsyPtt.conf.long.pe.exp <- p3.AsyPtt.conf.long.pe %>% filter(Btw==1)
p3.AsyPtt.conf.long.pe.con <- p3.AsyPtt.conf.long.pe %>% filter(Btw==2)

# wide format
p3.AsyPtt.conf.swide.pe <- p3.AsyPtt.conf.long.pe %>% spread(key = Resp, value = Conf)
p3.AsyPtt.conf.swide.pe.exp <- p3.AsyPtt.conf.swide.pe %>% filter(Btw==1)
p3.AsyPtt.conf.swide.pe.con <- p3.AsyPtt.conf.swide.pe %>% filter(Btw==2)

# summary table
p3.AsyPtt.conf.g.pe <- p3.AsyPtt.conf.long.pe  %>% 
  group_by(Btw, cPE, cSrc, Resp) %>%
  summarise(Conf.M = mean(Conf), Conf.SD = sd(Conf)) %>% ungroup()
p3.AsyPtt.conf.g.pe$Conf.se <- Rmisc::summarySEwithin(data = p3.AsyPtt.conf.long.pe, measurevar = "Conf", idvar = "SN", 
                                                betweenvars = "Btw", withinvars = c("cPE","cSrc","Resp"))$se
p3.AsyPtt.conf.g.pe$Conf.ci <- Rmisc::summarySEwithin(data = p3.AsyPtt.conf.long.pe, measurevar = "Conf", idvar = "SN", 
                                                betweenvars = "Btw", withinvars = c("cPE","cSrc","Resp"))$ci
p3.AsyPtt.conf.g.pe.exp <- p3.AsyPtt.g.pe %>% filter(Btw==1)
p3.AsyPtt.conf.g.pe.con <- p3.AsyPtt.g.pe %>% filter(Btw==2)
p3.AsyPtt.conf.g.pe %>% kable(digits=2)
Btw cPE cSrc Resp Conf.M Conf.SD Conf.se Conf.ci
1 pe1 List_1 Day_1 3.31 0.48 0.07 0.15
1 pe1 List_1 Day_2 2.78 0.49 0.06 0.13
1 pe1 List_2 Day_1 3.01 0.57 0.06 0.13
1 pe1 List_2 Day_2 3.14 0.53 0.06 0.12
1 pe2 List_1 Day_1 3.35 0.41 0.06 0.12
1 pe2 List_1 Day_2 2.67 0.86 0.16 0.33
1 pe2 List_2 Day_1 3.07 0.65 0.09 0.19
1 pe2 List_2 Day_2 3.21 0.47 0.05 0.10
1 pe3 List_1 Day_1 3.32 0.50 0.09 0.19
1 pe3 List_1 Day_2 2.62 0.69 0.14 0.29
1 pe3 List_2 Day_1 3.18 0.47 0.07 0.14
1 pe3 List_2 Day_2 3.18 0.46 0.05 0.10
2 pe1 List_1 Day_1 3.22 0.52 0.07 0.14
2 pe1 List_1 Day_2 2.72 0.84 0.17 0.36
2 pe1 List_2 Day_1 3.10 0.54 0.09 0.19
2 pe1 List_2 Day_2 3.16 0.54 0.06 0.12
2 pe2 List_1 Day_1 3.25 0.47 0.07 0.15
2 pe2 List_1 Day_2 2.71 0.62 0.10 0.22
2 pe2 List_2 Day_1 3.02 0.56 0.08 0.16
2 pe2 List_2 Day_2 3.23 0.47 0.04 0.08
2 pe3 List_1 Day_1 3.32 0.43 0.05 0.11
2 pe3 List_1 Day_2 2.63 0.53 0.07 0.15
2 pe3 List_2 Day_1 3.07 0.65 0.11 0.23
2 pe3 List_2 Day_2 3.16 0.49 0.05 0.11


p3.AsyPtt.conf.long.pe1 <- p3.AsyPtt.conf.long.pe %>% filter(cPE == "pe1")
p3.AsyPtt.conf.g.all.pe1 <- p3.AsyPtt.conf.g.pe %>% filter(cPE == "pe1")
p3.all.plot3.conf.pe1 <- ggplot(data=p3.AsyPtt.conf.long.pe1, aes(x=cSrc, y=Conf, fill=Resp)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .9, width = 0.8, colour="black", size = 1.02) +
  geom_pointrange(data=p3.AsyPtt.conf.g.all.pe1, aes(x = cSrc, y=Conf.M, ymin = Conf.M-Conf.ci, ymax = Conf.M+Conf.ci),
                  position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
  facet_grid(.~Btw, scales="free_x", space = "free",
             labeller = labeller(Btw = c("1" = "Experimental Group","2" = "Control Group"))) +
  scale_x_discrete(labels=c("List 1","List 2")) +
  scale_fill_manual(values = c("#feb24c", "#91bfdb"),
                    labels = c("Day 1 Response", "Day 2 Response")) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Source Response by Object List", y = "Confidence Rating (1-4)", fill ="Attribution") +
  # ggtitle("Source Memory Response") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        strip.text.x = element_text(face = "plain", size = 15, color = "black"),
        strip.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
        panel.spacing=unit(1, "lines"),
        plot.margin = margin(1, 0.3, 1, 0.3, "cm"), 
        # plot.title = element_text(hjust = 0.5),
        legend.position=c(0.8, 0.85))

p3.AsyPtt.conf.long.pe2 <- p3.AsyPtt.conf.long.pe %>% filter(cPE == "pe2")
p3.AsyPtt.conf.g.all.pe2 <- p3.AsyPtt.conf.g.pe %>% filter(cPE == "pe2")
p3.all.plot3.conf.pe2 <- ggplot(data=p3.AsyPtt.conf.long.pe2, aes(x=cSrc, y=Conf, fill=Resp)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .9, width = 0.8, colour="black", size = 1.02) +
  geom_pointrange(data=p3.AsyPtt.conf.g.all.pe2, aes(x = cSrc, y=Conf.M, ymin = Conf.M-Conf.ci, ymax = Conf.M+Conf.ci),
                  position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
  facet_grid(.~Btw, scales="free_x", space = "free",
             labeller = labeller(Btw = c("1" = "Experimental Group","2" = "Control Group"))) +
  scale_x_discrete(labels=c("List 1","List 2")) +
  scale_fill_manual(values = c("#feb24c", "#91bfdb"),
                    labels = c("Day 1 Response", "Day 2 Response")) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Source Response by Object List", y = "Confidence Rating (1-4)", fill ="Attribution") +
  # ggtitle("Source Memory Response") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        strip.text.x = element_text(face = "plain", size = 15, color = "black"),
        strip.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
        panel.spacing=unit(1, "lines"),
        plot.margin = margin(1, 0.3, 1, 0.3, "cm"), 
        # plot.title = element_text(hjust = 0.5),
        legend.position=c(0.8, 0.85))
p3.AsyPtt.conf.long.pe3 <- p3.AsyPtt.conf.long.pe %>% filter(cPE == "pe3")
p3.AsyPtt.conf.g.all.pe3 <- p3.AsyPtt.conf.g.pe %>% filter(cPE == "pe3")
p3.all.plot3.conf.pe3 <- ggplot(data=p3.AsyPtt.conf.long.pe3, aes(x=cSrc, y=Conf, fill=Resp)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .9, width = 0.8, colour="black", size = 1.02) +
  geom_pointrange(data=p3.AsyPtt.conf.g.all.pe3, aes(x = cSrc, y=Conf.M, ymin = Conf.M-Conf.ci, ymax = Conf.M+Conf.ci),
                  position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
  facet_grid(.~Btw, scales="free_x", space = "free",
             labeller = labeller(Btw = c("1" = "Experimental Group","2" = "Control Group"))) +
  scale_x_discrete(labels=c("List 1","List 2")) +
  scale_fill_manual(values = c("#feb24c", "#91bfdb"),
                    labels = c("Day 1 Response", "Day 2 Response")) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Source Response by Object List", y = "Confidence Rating (1-4)", fill ="Attribution") +
  # ggtitle("Source Memory Response") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        strip.text.x = element_text(face = "plain", size = 15, color = "black"),
        strip.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
        panel.spacing=unit(1, "lines"),
        plot.margin = margin(1, 0.3, 1, 0.3, "cm"), 
        # plot.title = element_text(hjust = 0.5),
        legend.position=c(0.8, 0.85))


ggpubr::ggarrange(p3.all.plot3.conf.pe1, p3.all.plot3.conf.pe2, p3.all.plot3.conf.pe3, ncol=3, 
          labels = c("A) PE 1 (0%)", "B) PE 2 (50%)", "C) PE 3 (100%)"),
          hjust = -0.1, vjust=1, font.label = list(size = 16)) 


각 예측 오류 조건에서 출처 반응에 따른 확신도의 혼합 요인 분산 분석을 수행하였다.

p3.AsyPtt.conf.long.pe.1 <- p3.AsyPtt.conf.long.pe %>% unite(cSrc_Resp, c(cSrc,Resp), remove=FALSE) %>% 
  rename(sResp = "cSrc_Resp") 
p3.AsyPtt.conf.long.pe.1$sResp[p3.AsyPtt.conf.long.pe.1$sResp=='List_1_Day_1'] <- 'List 1 Correct'
p3.AsyPtt.conf.long.pe.1$sResp[p3.AsyPtt.conf.long.pe.1$sResp=='List_2_Day_2'] <- 'List 2 Correct'
p3.AsyPtt.conf.long.pe.1$sResp[p3.AsyPtt.conf.long.pe.1$sResp=='List_1_Day_2'] <- 'Source Confusion'
p3.AsyPtt.conf.long.pe.1$sResp[p3.AsyPtt.conf.long.pe.1$sResp=='List_2_Day_1'] <- 'Intrusion'
p3.AsyPtt.conf.long.pe.1$sResp <- factor(p3.AsyPtt.conf.long.pe.1$sResp)
p3.AsyPtt.conf.long.pe1.1 <- p3.AsyPtt.conf.long.pe.1 %>% filter(cPE=="pe1")
p3.AsyPtt.conf.long.pe2.1 <- p3.AsyPtt.conf.long.pe.1 %>% filter(cPE=="pe2")
p3.AsyPtt.conf.long.pe3.1 <- p3.AsyPtt.conf.long.pe.1 %>% filter(cPE=="pe3")

p3.AsyPtt.conf.g.pe.1 <- p3.AsyPtt.conf.long.pe.1 %>% group_by(Btw, cPE, sResp) %>%
  summarise(Conf.M = mean(Conf), Conf.SD = sd(Conf)) %>% ungroup()
p3.AsyPtt.conf.g.pe.1$Conf.se <- Rmisc::summarySEwithin(data = p3.AsyPtt.conf.long.pe.1, idvar = "SN",
                                                         measurevar = "Conf", betweenvars = "Btw", withinvars = c("cPE","sResp"))$se
p3.AsyPtt.conf.g.pe.1$Conf.ci <- Rmisc::summarySEwithin(data = p3.AsyPtt.conf.long.pe.1, idvar = "SN",
                                                         measurevar = "Conf", betweenvars = "Btw", withinvars = c("cPE","sResp"))$ci
p3.AsyPtt.conf.g.pe1.1 <- p3.AsyPtt.conf.g.pe.1 %>% filter(cPE=="pe1")
p3.AsyPtt.conf.g.pe2.1 <- p3.AsyPtt.conf.g.pe.1 %>% filter(cPE=="pe2")
p3.AsyPtt.conf.g.pe3.1 <- p3.AsyPtt.conf.g.pe.1 %>% filter(cPE=="pe3")

PE 1 조건에서의 분석 결과는 아래와 같다.

p3.AsyPtt.conf.g.pe1.1 %>% kable(digits=2)
Btw cPE sResp Conf.M Conf.SD Conf.se Conf.ci
1 pe1 Intrusion 3.01 0.57 0.06 0.13
1 pe1 List 1 Correct 3.31 0.48 0.07 0.16
1 pe1 List 2 Correct 3.14 0.53 0.06 0.12
1 pe1 Source Confusion 2.78 0.49 0.06 0.13
2 pe1 Intrusion 3.10 0.54 0.09 0.19
2 pe1 List 1 Correct 3.22 0.52 0.07 0.15
2 pe1 List 2 Correct 3.16 0.54 0.06 0.12
2 pe1 Source Confusion 2.72 0.84 0.18 0.37
p3.AsyPtt.conf.pe1.1.aov <- aov_ez(id = "SN", dv = "Conf", data = p3.AsyPtt.conf.long.pe1.1, between = "Btw", within = "sResp")
anova(p3.AsyPtt.conf.pe1.1.aov, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 0.837 0.006 0.000 0.937
sResp 1.912 65.008 0.246 11.385 0.251 0.000
Btw:sResp 1.912 65.008 0.246 0.387 0.011 0.671


분석 결과, 출처 반응의 주효과가 유의하였다.

p3.AsyPtt.conf.pe1.m1 <- emmeans(p3.AsyPtt.conf.pe1.1.aov, pairwise ~ sResp | Btw, type = "response")
p3.AsyPtt.conf.pe1.m1$contrasts %>% kable(digit=3)
contrast Btw estimate SE df t.ratio p.value
Intrusion - List.1.Correct 1 -0.302 0.099 34 -3.048 0.022
Intrusion - List.2.Correct 1 -0.128 0.097 34 -1.320 0.557
Intrusion - Source.Confusion 1 0.233 0.175 34 1.332 0.549
List.1.Correct - List.2.Correct 1 0.173 0.086 34 2.026 0.199
List.1.Correct - Source.Confusion 1 0.534 0.166 34 3.228 0.014
List.2.Correct - Source.Confusion 1 0.361 0.142 34 2.540 0.071
Intrusion - List.1.Correct 2 -0.122 0.099 34 -1.228 0.614
Intrusion - List.2.Correct 2 -0.063 0.097 34 -0.644 0.917
Intrusion - Source.Confusion 2 0.384 0.175 34 2.199 0.144
List.1.Correct - List.2.Correct 2 0.059 0.086 34 0.688 0.901
List.1.Correct - Source.Confusion 2 0.505 0.166 34 3.053 0.022
List.2.Correct - Source.Confusion 2 0.446 0.142 34 3.143 0.017


실험 집단통제 집단 모두에서, Source Confusion의 확신도는 List 1 Correct, List 2 Correct보다 유의하게 낮았다. 추가로, 통제 집단에서 IntrusionSource Confusion 간의 확신도 차이는 유의하였다.


PE 2 조건에서의 분석 결과는 아래와 같다.

p3.AsyPtt.conf.g.pe2.1 %>% kable(digits=2)
Btw cPE sResp Conf.M Conf.SD Conf.se Conf.ci
1 pe2 Intrusion 3.07 0.65 0.09 0.19
1 pe2 List 1 Correct 3.35 0.41 0.06 0.12
1 pe2 List 2 Correct 3.21 0.47 0.05 0.10
1 pe2 Source Confusion 2.67 0.86 0.16 0.34
2 pe2 Intrusion 3.02 0.56 0.08 0.16
2 pe2 List 1 Correct 3.25 0.47 0.07 0.15
2 pe2 List 2 Correct 3.23 0.47 0.04 0.09
2 pe2 Source Confusion 2.71 0.62 0.11 0.22
p3.AsyPtt.conf.pe2.1.aov <- aov_ez(id = "SN", dv = "Conf", data = p3.AsyPtt.conf.long.pe2.1, between = "Btw", within = "sResp")
anova(p3.AsyPtt.conf.pe2.1.aov, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 0.899 0.023 0.001 0.881
sResp 1.956 66.521 0.230 17.854 0.344 0.000
Btw:sResp 1.956 66.521 0.230 0.218 0.006 0.800


분석 결과, 출처 반응의 주효과가 유의하였다.

p3.AsyPtt.conf.pe2.m1 <- emmeans(p3.AsyPtt.conf.pe2.1.aov, pairwise ~ sResp | Btw, type = "response")
p3.AsyPtt.conf.pe2.m1$contrasts %>% kable(digit=3)
contrast Btw estimate SE df t.ratio p.value
Intrusion - List.1.Correct 1 -0.273 0.097 34 -2.816 0.038
Intrusion - List.2.Correct 1 -0.139 0.104 34 -1.340 0.545
Intrusion - Source.Confusion 1 0.407 0.157 34 2.599 0.063
List.1.Correct - List.2.Correct 1 0.133 0.079 34 1.693 0.343
List.1.Correct - Source.Confusion 1 0.680 0.169 34 4.017 0.002
List.2.Correct - Source.Confusion 1 0.546 0.143 34 3.831 0.003
Intrusion - List.1.Correct 2 -0.237 0.097 34 -2.447 0.087
Intrusion - List.2.Correct 2 -0.207 0.104 34 -1.992 0.211
Intrusion - Source.Confusion 2 0.312 0.157 34 1.991 0.211
List.1.Correct - List.2.Correct 2 0.030 0.079 34 0.377 0.981
List.1.Correct - Source.Confusion 2 0.549 0.169 34 3.243 0.013
List.2.Correct - Source.Confusion 2 0.519 0.143 34 3.639 0.005


실험 집단통제 집단 모두에서, Source Confusion의 확신도는 List 1 Correct, List 2 Correct보다 유의하게 낮았다. 실험 집단에서 IntrusionSource Confusion 간의 확신도 차이는 유의하였다.


PE 2 조건에서의 분석 결과는 아래와 같다.

p3.AsyPtt.conf.g.pe3.1 %>% kable(digits=2)
Btw cPE sResp Conf.M Conf.SD Conf.se Conf.ci
1 pe3 Intrusion 3.18 0.47 0.07 0.14
1 pe3 List 1 Correct 3.32 0.50 0.09 0.19
1 pe3 List 2 Correct 3.18 0.46 0.05 0.11
1 pe3 Source Confusion 2.62 0.69 0.14 0.29
2 pe3 Intrusion 3.07 0.65 0.11 0.24
2 pe3 List 1 Correct 3.32 0.43 0.05 0.11
2 pe3 List 2 Correct 3.16 0.49 0.05 0.11
2 pe3 Source Confusion 2.63 0.53 0.07 0.15
p3.AsyPtt.conf.pe3.1.aov <- aov_ez(id = "SN", dv = "Conf", data = p3.AsyPtt.conf.long.pe3.1, between = "Btw", within = "sResp")
anova(p3.AsyPtt.conf.pe3.1.aov, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 0.729 0.046 0.001 0.831
sResp 2.327 79.133 0.180 23.358 0.407 0.000
Btw:sResp 2.327 79.133 0.180 0.158 0.005 0.883


분석 결과, 출처 반응의 주효과가 유의하였다.

p3.AsyPtt.conf.pe3.m1 <- emmeans(p3.AsyPtt.conf.pe3.1.aov, pairwise ~ sResp | Btw, type = "response")
p3.AsyPtt.conf.pe3.m1$contrasts %>% kable(digit=3)
contrast Btw estimate SE df t.ratio p.value
Intrusion - List.1.Correct 1 -0.142 0.116 34 -1.231 0.612
Intrusion - List.2.Correct 1 -0.008 0.103 34 -0.081 1.000
Intrusion - Source.Confusion 1 0.551 0.152 34 3.637 0.005
List.1.Correct - List.2.Correct 1 0.134 0.099 34 1.349 0.539
List.1.Correct - Source.Confusion 1 0.694 0.154 34 4.508 0.000
List.2.Correct - Source.Confusion 1 0.560 0.113 34 4.961 0.000
Intrusion - List.1.Correct 2 -0.247 0.116 34 -2.132 0.164
Intrusion - List.2.Correct 2 -0.087 0.103 34 -0.843 0.834
Intrusion - Source.Confusion 2 0.446 0.152 34 2.943 0.028
List.1.Correct - List.2.Correct 2 0.160 0.099 34 1.605 0.389
List.1.Correct - Source.Confusion 2 0.693 0.154 34 4.501 0.000
List.2.Correct - Source.Confusion 2 0.533 0.113 34 4.726 0.000


실험 집단통제 집단 모두에서, Source Confusion의 확신도는 List 1 Correct, List 2 Correct보다 유의하게 낮았다. 또한 IntrusionSource Confusion 간의 확신도 차이는 유의하였다.


2.2.2.3.2 목록 1 정확반응의 확신도


List 1 Correct (L1>D1) 에서 집단과 예측 오류 조건에 따른 확신도 차이가 있는지 확인하기 위해 조건에 대한 정확도 평균과 표준편차를 계산하였다. 아래의 그래프에서 A는 전체 집단, B는 실험 집단, C는 통제 집단을 나타내며, 빨간 점은 평균, 리본은 95% 신뢰구간을 표시한다.

## List 1 Correct Response
# long format
p3.Acc.conf.long.all.1 <- p3 %>% filter(cSrc == "List_1", cPE != "pe0", Correct == 1) %>% group_by(SN, Btw, cPE) %>% 
  summarise(Conf = mean(Conf)) %>% ungroup()
p3.Acc.conf.long.exp.1<- p3.Acc.conf.long.all.1 %>% filter(Btw==1)
p3.Acc.conf.long.con.1 <- p3.Acc.conf.long.all.1 %>% filter(Btw==2)

# wide format
p3.Acc.conf.swide.all.1 <- p3.Acc.conf.long.all.1 %>% spread(key = cPE, value = Conf)
p3.Acc.conf.swide.exp.1 <- p3.Acc.conf.swide.all.1 %>% filter(Btw==1)
p3.Acc.conf.swide.con.1 <- p3.Acc.conf.swide.all.1 %>% filter(Btw==2)

# summary
p3.Acc.conf.g.all.1 <- p3.Acc.conf.long.all.1 %>%  group_by(Btw, cPE) %>% 
  summarise(Conf.M = mean(Conf), Conf.SD = sd(Conf)) %>% ungroup() 
p3.Acc.conf.g.all.1$Conf.se <- Rmisc::summarySEwithin(data = p3.Acc.conf.long.all.1, measurevar = "Conf", 
                                                      idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$se
p3.Acc.conf.g.all.1$Conf.ci <- Rmisc::summarySEwithin(data = p3.Acc.conf.long.all.1, measurevar = "Conf", 
                                                      idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$ci
p3.Acc.conf.g.exp.1 <- p3.Acc.conf.g.all.1 %>% filter(Btw==1)
p3.Acc.conf.g.con.1 <- p3.Acc.conf.g.all.1 %>% filter(Btw==2)
p3.Acc.conf.g.all.1 %>% kable(digit=2)
Btw cPE Conf.M Conf.SD Conf.se Conf.ci
1 pe1 3.31 0.48 0.03 0.07
1 pe2 3.35 0.41 0.05 0.10
1 pe3 3.32 0.50 0.05 0.10
2 pe1 3.22 0.52 0.04 0.08
2 pe2 3.25 0.47 0.04 0.08
2 pe3 3.32 0.43 0.04 0.09
## plot
p3.conf.all.plot2.2.1 <- ggplot(p3.Acc.conf.g.all.1, mapping=aes(x=cPE, y=Conf.M, group=Btw)) + 
  geom_ribbon(aes(ymin=Conf.M-Conf.ci, ymax=Conf.M+Conf.ci, fill=Btw), alpha=0.3) + 
  geom_line(p3.Acc.conf.g.all.1, mapping = aes(x=cPE, y=Conf.M, color = Btw), size = 1, show.legend = FALSE) +
  geom_pointrange(aes(x = cPE, ymin=Conf.M, ymax=Conf.M, color=Btw), position = position_dodge(0), 
                  size = 0.8, show.legend = FALSE) +
  scale_fill_manual(values = c("#e69f00", "#56b4e9"), labels = c("Experimental", "Control")) +
  scale_color_manual(values = c("#e69f00", "#56b4e9")) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "Confidence Rating (1 - 4)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 Correct SM (L1>D1; Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"),
        legend.position = "top")
p3.conf.exp.plot2.2.1 <- ggplot(p3.Acc.conf.g.exp.1, mapping=aes(x=cPE, y=Conf.M, group=1)) + 
  geom_ribbon(aes(ymin=Conf.M-Conf.ci, ymax=Conf.M+Conf.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=Conf.M, ymax=Conf.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.conf.long.exp.1, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=Conf, group=SN, color=SN)) +
  geom_point(p3.Acc.conf.long.exp.1, mapping = aes(x=cPE, y=Conf, group=SN, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "Confidence Rating (1 - 4)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 Correct SM (L1>D1; Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
p3.conf.con.plot2.2.1 <- ggplot(p3.Acc.conf.g.con.1, mapping=aes(x=cPE, y=Conf.M, group=1)) + 
  geom_ribbon(aes(ymin=Conf.M-Conf.ci, ymax=Conf.M+Conf.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=Conf.M, ymax=Conf.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.conf.long.con.1, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=Conf, group=SN, color=SN)) +
  geom_point(p3.Acc.conf.long.con.1, mapping = aes(x=cPE, y=Conf, group=SN, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "Confidence Rating (1 - 4)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 Correct SM (L1>D1; Con)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
ggpubr::ggarrange(p3.conf.all.plot2.2.1, p3.conf.exp.plot2.2.1, p3.conf.con.plot2.2.1, ncol=3, 
          labels = c("A) All Group", "B) Experimental", "C) Control"),
          hjust = -0.1, vjust=1, font.label = list(size = 16))


확신도에 대하여 참가자 간 변인인 집단, 참가자 내 변인인 예측 오류 조건을 요인으로 하는 2 X 3 혼합 요인 분산분석을 수행하였다.


p3.Acc.all.aov.conf.1 <- aov_ez(id = "SN", dv = "Conf", data = p3.Acc.conf.long.all.1, between = "Btw", within = "cPE")
anova(p3.Acc.all.aov.conf.1, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 0.588 0.171 0.005 0.682
cPE 1.889 64.229 0.038 0.718 0.021 0.484
Btw:cPE 1.889 64.229 0.038 0.742 0.021 0.473


분석 결과, 모든 효과가 유의하지 않았다.


2.2.2.3.3 목록 1 출처 혼동의 확신도


Source Confusion (L1>D2)에서 집단, 예측 오류 조건에 따른 확신도 평균과 표준편차를 계산하였다. 24번, 25번 참가자는 일부 예측 오류 조건에서 Source Confusion 반응이 없었기 때문에 확신도 반응도 없었다. 따라서 결과가 왜곡되는 것을 방지하기 위해 분석에서 제외하였다. 아래의 그래프에서 A는 전체 집단, B는 실험 집단, C는 통제 집단을 나타내며, 빨간 점은 평균, 빨간 리본은 95% 신뢰구간을 나타낸다.


## List 1 Source Confusion
# long format
p3.Err.conf.long.all <- p3 %>% filter(cSrc == "List_1", cPE != "pe0", Err == 1, SN != 24, SN != 25) %>% group_by(SN, Btw, cPE) %>% 
  summarise(Conf = mean(Conf)) %>% ungroup()
p3.Err.conf.long.exp <- p3.Err.conf.long.all %>% filter(Btw==1)
p3.Err.conf.long.con <- p3.Err.conf.long.all %>% filter(Btw==2)

# wide format
p3.Err.conf.swide.all <- p3.Err.conf.long.all %>% spread(key = cPE, value = Conf)
p3.Err.conf.swide.exp <- p3.Err.conf.swide.all %>% filter(Btw==1)
p3.Err.conf.swide.con <- p3.Err.conf.swide.all %>% filter(Btw==2)

# summary
p3.Err.conf.g.all <- p3.Err.conf.long.all %>%  group_by(Btw, cPE) %>% 
  summarise(Conf.M = mean(Conf), Conf.SD = sd(Conf)) %>% ungroup() 
p3.Err.conf.g.all$Conf.se <- Rmisc::summarySEwithin(data = p3.Err.conf.long.all, measurevar = "Conf", 
                                                    idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$se
p3.Err.conf.g.all$Conf.ci <- Rmisc::summarySEwithin(data = p3.Err.conf.long.all, measurevar = "Conf", 
                                                    idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$ci
p3.Err.conf.g.exp <- p3.Err.conf.g.all %>% filter(Btw==1)
p3.Err.conf.g.con <- p3.Err.conf.g.all %>% filter(Btw==2)
p3.Err.conf.g.all %>% kable(digit=2)
Btw cPE Conf.M Conf.SD Conf.se Conf.ci
1 pe1 2.79 0.50 0.09 0.19
1 pe2 2.82 0.56 0.07 0.15
1 pe3 2.63 0.72 0.11 0.23
2 pe1 2.87 0.51 0.08 0.16
2 pe2 2.69 0.63 0.07 0.15
2 pe3 2.62 0.55 0.07 0.14
## plot 
p3.conf.all.plot2.3 <- ggplot(p3.Err.conf.g.all, mapping=aes(x=cPE, y=Conf.M, group=Btw)) + 
  geom_ribbon(aes(ymin=Conf.M-Conf.ci, ymax=Conf.M+Conf.ci, fill=Btw), alpha=0.3) + 
  geom_line(p3.Err.conf.g.all, mapping = aes(x=cPE, y=Conf.M, color = Btw), size = 1, show.legend = FALSE) +
  geom_pointrange(aes(x = cPE, ymin=Conf.M, ymax=Conf.M, color=Btw), position = position_dodge(0), 
                  size = 0.8, show.legend = FALSE) +
  scale_fill_manual(values = c("#e69f00", "#56b4e9"), labels = c("Experimental", "Control")) +
  scale_color_manual(values = c("#e69f00", "#56b4e9")) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "Confidence Rating (1 - 4)", fill="Group") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 Correct SM (L1>D1; Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"),
        legend.position = "top")
p3.conf.exp.plot2.3 <- ggplot(p3.Err.conf.g.exp, mapping=aes(x=cPE, y=Conf.M, group=1)) + 
  geom_ribbon(aes(ymin=Conf.M-Conf.ci, ymax=Conf.M+Conf.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=Conf.M, ymax=Conf.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Err.conf.long.exp, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=Conf, group=SN, color=SN)) +
  geom_point(p3.Err.conf.long.exp, mapping = aes(x=cPE, y=Conf, group=SN, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "Confidence Rating (1 - 4)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("Source Confusions (L1>D2; Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
p3.conf.con.plot2.3 <- ggplot(p3.Err.conf.g.con, mapping=aes(x=cPE, y=Conf.M, group=1)) + 
  geom_ribbon(aes(ymin=Conf.M-Conf.ci, ymax=Conf.M+Conf.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=Conf.M, ymax=Conf.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Err.conf.long.con, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=Conf, group=SN, color=SN)) +
  geom_point(p3.Err.conf.long.con, mapping = aes(x=cPE, y=Conf, group=SN, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "Confidence Rating (1 - 4)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("Source Confusions (L1>D2; Con)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
ggpubr::ggarrange(p3.conf.all.plot2.3, p3.conf.exp.plot2.3, p3.conf.con.plot2.3, ncol=3, 
          labels=c("A) All Group","B) Experimental","C) Control"),
          hjust = -0.1, vjust=1, font.label = list(size = 16))


집단과 예측 오류 조건을 요인으로 2 X 3 혼합 요인 분산분석을 수행하였다.


p3.Err.all.aov.conf <- aov_ez(id = "SN", dv = "Conf", data = p3.Err.conf.long.all, between = "Btw", within = "cPE")
anova(p3.Err.all.aov.conf, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 32.000 0.765 0.014 0.000 0.907
cPE 1.853 59.294 0.135 2.941 0.084 0.064
Btw:cPE 1.853 59.294 0.135 0.822 0.025 0.436


분석 결과, 모든 효과가 유의하지 않았다.


2.2.2.3.4 목록 2 정확반응의 확신도


List 2 Correct (L2>D2)에서 집단과 예측 오류에 따른 확신도 평균과 표준편차를 계산하였다. 아래의 그래프에서 A는 전체 집단, B는 실험 집단, C는 통제 집단을 나타내며, 빨간 점은 평균, 빨간 리본은 95% 신뢰구간을 나타낸다.


## List 2 Correct Source Memory
# long format
p3.Acc.conf.long.all.2 <- p3 %>%  filter(cSrc == "List_2", cPE != "pe0", Correct == 1) %>% group_by(SN, Btw, cPE) %>% 
  summarise(Conf = mean(Conf)) %>% ungroup()
p3.Acc.conf.long.exp.2 <- p3.Acc.conf.long.all.2 %>% filter(Btw==1)
p3.Acc.conf.long.con.2 <- p3.Acc.conf.long.all.2 %>% filter(Btw==2)

# wide format
p3.Acc.conf.swide.all.2 <- p3.Acc.conf.long.all.2 %>% spread(key = cPE, value = Conf)
p3.Acc.conf.swide.exp.2 <- p3.Acc.conf.swide.all.2 %>% filter(Btw==1)
p3.Acc.conf.swide.con.2 <- p3.Acc.conf.swide.all.2 %>% filter(Btw==2)

# summary
p3.Acc.conf.g.all.2 <- p3.Acc.conf.long.all.2 %>%  group_by(Btw, cPE) %>% 
  summarise(Conf.M = mean(Conf), Conf.SD = sd(Conf)) %>% ungroup() 
p3.Acc.conf.g.all.2$Conf.se <- Rmisc::summarySEwithin(data = p3.Acc.conf.long.all.2, measurevar = "Conf", 
                                                      idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$se
p3.Acc.conf.g.all.2$Conf.ci <- Rmisc::summarySEwithin(data = p3.Acc.conf.long.all.2, measurevar = "Conf", 
                                                      idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$ci
p3.Acc.conf.g.exp.2 <- p3.Acc.conf.g.all.2 %>% filter(Btw==1)
p3.Acc.conf.g.con.2 <- p3.Acc.conf.g.all.2 %>% filter(Btw==2)
p3.Acc.conf.g.all.2 %>% kable(digit=2)
Btw cPE Conf.M Conf.SD Conf.se Conf.ci
1 pe1 3.14 0.53 0.04 0.09
1 pe2 3.21 0.47 0.04 0.09
1 pe3 3.18 0.46 0.05 0.10
2 pe1 3.16 0.54 0.04 0.09
2 pe2 3.22 0.47 0.04 0.08
2 pe3 3.16 0.49 0.04 0.09
## plot
p3.conf.all.plot2.2.2 <- ggplot(p3.Acc.conf.g.all.2, mapping=aes(x=cPE, y=Conf.M, group=Btw)) + 
  geom_ribbon(aes(ymin=Conf.M-Conf.ci, ymax=Conf.M+Conf.ci, fill=Btw), alpha=0.3) + 
  geom_line(p3.Acc.conf.g.all.2, mapping = aes(x=cPE, y=Conf.M, color = Btw), size = 1, show.legend = FALSE) +
  geom_pointrange(aes(x = cPE, ymin=Conf.M, ymax=Conf.M, color=Btw), position = position_dodge(0), 
                  size = 0.8, show.legend = FALSE) +
  scale_fill_manual(values = c("#e69f00", "#56b4e9"), labels = c("Experimental", "Control")) +
  scale_color_manual(values = c("#e69f00", "#56b4e9")) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "Confidence Rating (1 - 4)", fill="Group") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 Correct SM (L1>D1; Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"),
        legend.position = "top")

p3.conf.exp.plot2.2.2 <- ggplot(p3.Acc.conf.g.exp.2, mapping=aes(x=cPE, y=Conf.M, group=1)) + 
  geom_ribbon(aes(ymin=Conf.M-Conf.ci, ymax=Conf.M+Conf.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=Conf.M, ymax=Conf.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.conf.long.exp.2, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=Conf, group=SN, color=SN)) +
  geom_point(p3.Acc.conf.long.exp.2, mapping = aes(x=cPE, y=Conf, group=SN, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "Confidence Rating (1 - 4)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 2 Correct SM (L2>D2; Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
p3.conf.con.plot2.2.2 <- ggplot(p3.Acc.conf.g.con.2, mapping=aes(x=cPE, y=Conf.M, group=1)) + 
  geom_ribbon(aes(ymin=Conf.M-Conf.ci, ymax=Conf.M+Conf.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=Conf.M, ymax=Conf.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.conf.long.con.2, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=Conf, group=SN, color=SN)) +
  geom_point(p3.Acc.conf.long.con.2, mapping = aes(x=cPE, y=Conf, group=SN, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "Confidence Rating (1 - 4)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 2 Correct SM (L2>D2; Con)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
ggpubr::ggarrange(p3.conf.all.plot2.2.2, p3.conf.exp.plot2.2.2, p3.conf.con.plot2.2.2, ncol=3, 
          labels=c("A) All Group", "B) Experimental", "C) Control"),
          hjust = -0.1, vjust=1, font.label = list(size = 16))


집단과 예측 오류 조건에 따른 2 X 3 혼합 요인 분산분석을 수행하였다.


p3.Acc.all.aov.conf.2 <- aov_ez(id = "SN", dv = "Conf", data = p3.Acc.conf.long.all.2, between = "Btw", within = "cPE")
anova(p3.Acc.all.aov.conf.2, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 0.656 0.000 0.000 0.986
cPE 1.959 66.608 0.038 1.113 0.032 0.334
Btw:cPE 1.959 66.608 0.038 0.137 0.004 0.868

분석 결과, 모든 효과가 유의하지 않았다.


2.2.2.3.5 목록 2 침범의 확신도


Intrusion (L2>D1) 확신도의 집단과 예측 오류 조건에 따른 평균과 표준편차를 계산하였다. 아래의 그래프에서 A는 전체 집단, B는 실험 집단, C는 통제 집단을 나타내며, 빨간 점은 평균, 빨간 리본은 95% 신뢰구간을 나타낸다.


## List 2 Intrusion
# long format
p3.Intru.conf.long.all <- p3 %>% filter(cSrc == "List_2", cPE != "pe0", Int == 1) %>% group_by(SN, Btw, cPE) %>% 
  summarise(Conf = mean(Conf)) %>% ungroup()
p3.Intru.conf.long.exp <- p3.Intru.conf.long.all %>% filter(Btw==1)
p3.Intru.conf.long.con <- p3.Intru.conf.long.all %>% filter(Btw==2)

# wide format
p3.Intru.conf.swide.all <- p3.Intru.conf.long.all %>% spread(key = cPE, value = Conf)
p3.Intru.conf.swide.exp <- p3.Intru.conf.swide.all %>% filter(Btw==1)
p3.Intru.conf.swide.con <- p3.Intru.conf.swide.all %>% filter(Btw==2)

# summary
p3.Intru.conf.g.all <- p3.Intru.conf.long.all %>%  group_by(Btw, cPE) %>% 
  summarise(Conf.M = mean(Conf), Conf.SD = sd(Conf)) %>% ungroup() 
p3.Intru.conf.g.all$Conf.se <- Rmisc::summarySEwithin(data = p3.Intru.conf.long.all, measurevar = "Conf", 
                                                      idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$se
p3.Intru.conf.g.all$Conf.ci <- Rmisc::summarySEwithin(data = p3.Intru.conf.long.all, measurevar = "Conf", 
                                                      idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$ci
p3.Intru.conf.g.exp <- p3.Intru.conf.g.all %>% filter(Btw==1)
p3.Intru.conf.g.con <- p3.Intru.conf.g.all %>% filter(Btw==2)
p3.Intru.conf.g.all %>% kable(digit=2)
Btw cPE Conf.M Conf.SD Conf.se Conf.ci
1 pe1 3.01 0.57 0.05 0.10
1 pe2 3.07 0.65 0.09 0.18
1 pe3 3.18 0.47 0.07 0.16
2 pe1 3.09 0.55 0.08 0.17
2 pe2 3.02 0.56 0.09 0.18
2 pe3 3.07 0.65 0.11 0.23
## plot
p3.conf.all.plot2.1 <- ggplot(p3.Intru.conf.g.all, mapping=aes(x=cPE, y=Conf.M, group=Btw)) + 
  geom_ribbon(aes(ymin=Conf.M-Conf.ci, ymax=Conf.M+Conf.ci, fill=Btw), alpha=0.3) + 
  geom_line(p3.Intru.conf.g.exp, mapping = aes(x=cPE, y=Conf.M, color = Btw), size = 1, show.legend = FALSE) +
  geom_pointrange(aes(x = cPE, ymin=Conf.M, ymax=Conf.M, color=Btw), position = position_dodge(0), 
                  size = 0.8, show.legend = FALSE) +
  scale_fill_manual(values = c("#e69f00", "#56b4e9"), labels = c("Experimental", "Control")) +
  scale_color_manual(values = c("#e69f00", "#56b4e9")) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "Confidence Rating (1 - 4)", fill="Group") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 Correct SM (L1>D1; Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"),
        legend.position = "top")
p3.conf.exp.plot2.1 <- ggplot(p3.Intru.conf.g.exp, mapping=aes(x=cPE, y=Conf.M, group=1)) + 
  geom_ribbon(aes(ymin=Conf.M-Conf.ci, ymax=Conf.M+Conf.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=Conf.M, ymax=Conf.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Intru.conf.long.exp, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=Conf, group=SN, color=SN)) +
  geom_point(p3.Intru.conf.long.exp, mapping = aes(x=cPE, y=Conf, group=SN, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "Confidence Rating (1 - 4)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("Intrusion (L2>D1; Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
p3.conf.con.plot2.1 <- ggplot(p3.Intru.conf.g.con, mapping=aes(x=cPE, y=Conf.M, group=1)) + 
  geom_ribbon(aes(ymin=Conf.M-Conf.ci, ymax=Conf.M+Conf.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=Conf.M, ymax=Conf.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Intru.conf.long.con, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=Conf, group=SN, color=SN)) +
  geom_point(p3.Intru.conf.long.con, mapping = aes(x=cPE, y=Conf, group=SN, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "Confidence Rating (1 - 4)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("Intrusion (L2>D1; Con)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
ggpubr::ggarrange(p3.conf.all.plot2.1, p3.conf.exp.plot2.1, p3.conf.con.plot2.1, ncol=3, 
          labels=c("A) All Group","B) Experimental", "C) Control"),
          hjust = -0.1, vjust=1, font.label = list(size = 16))


집단과 예측 오류 조건을 요인으로 한 2 X 3 혼합 요인 분산분석을 수행하였다.


p3.Intru.all.aov.conf <- aov_ez(id = "SN", dv = "Conf", data = p3.Intru.conf.long.all, between = "Btw", within = "cPE")
anova(p3.Intru.all.aov.conf, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 0.732 0.026 0.001 0.872
cPE 1.754 59.621 0.158 0.515 0.015 0.576
Btw:cPE 1.754 59.621 0.158 0.570 0.016 0.546

분석 결과, 모든 효과가 유의하지 않았다.


2.2.3 Day 3 연합 기억 정확도


출처 기억 반응에서는 예측 오류를 수반한 재활성화에 의해 기억 갱신 효과가 나타난다는 출처 반응 및 확신도 패턴을 확인할 수 있었다. 그러나 이러한 결과가 기억의 손상에 의한 것이 아닌 갱신에 의한 것이라는 점을 확인하기 위해서는 첫 날과 둘째 날에 학습한 연합 기억이 어느 정도 유지되어 있어야 한다. 또한 본 실험에서 유도한 재공고화, 예측 오류를 수반한 재활성화가 출처 기억 뿐만 아니라 연합 기억에도 영향을 준다면, 각 조건에 따라 일정한 패턴을 확인할 수 있을 것이다. 따라서 집단, 출처 반응, 예측 오류 조건에서의 연합 기억 정확도를 분석하였다. 기억 검사 과제에서 New로 출처 반응을 한 경우에는 연합 기억 검사를 생략하였으므로, 목록 3의 연합 기억은 분석할 수 없었다.


2.2.3.1 집단과 목록에 따른 연합 기억 정확도


첫째 날과 둘째 날의 연합 기억 학습 수행을 비교한 분석에서는 둘째 날 연합 기억 학습이 첫째 날 연합 기억 학습보다 우수하게 나타났었다. 이러한 결과 패턴이 마지막 날의 연합 기억 검사에서도 유사하게 나타나는지 확인하였다. 또한 두 집단 간의 연합 기억 수행의 차이가 있는지도 확인하였다.


# long format
p3.day.Asc.long.all <- p3 %>% filter(cSrc != "List_3", Resp != "New") %>% group_by(SN, Btw, cSrc) %>% 
  summarise(aCorr = mean(aCorr)*100) %>% ungroup
p3.day.Asc.long.exp <- p3.day.Asc.long.all %>% filter(Btw==1)
p3.day.Asc.long.con <- p3.day.Asc.long.all %>% filter(Btw==2)

# wide format
p3.day.Asc.swide.all <- p3.day.Asc.long.all %>% spread(key = cSrc, value = aCorr)
p3.day.Asc.swide.exp <- p3.day.Asc.swide.all %>% filter(Btw==1)
p3.day.Asc.swide.con <- p3.day.Asc.swide.all %>% filter(Btw==2)

# summary
p3.day.Asc.g.all <- p3.day.Asc.long.all %>% group_by(Btw, cSrc) %>% 
  summarise(aCorr.M = mean(aCorr), aCorr.SD = sd(aCorr)) %>% ungroup()
p3.day.Asc.g.all$aCorr.se <- Rmisc::summarySEwithin(data = p3.day.Asc.long.all, measurevar = "aCorr", 
                                                    idvar = "SN", betweenvars = "Btw", withinvars = "cSrc")$se
p3.day.Asc.g.all$aCorr.ci <- Rmisc::summarySEwithin(data = p3.day.Asc.long.all, measurevar = "aCorr", 
                                                    idvar = "SN", betweenvars = "Btw", withinvars = "cSrc")$ci  
p3.day.Asc.g.exp <- p3.day.Asc.g.all %>% filter(Btw==1)
p3.day.Asc.g.con <- p3.day.Asc.g.all %>% filter(Btw==2)
p3.day.Asc.g.all %>% kable(digits=2)
Btw cSrc aCorr.M aCorr.SD aCorr.se aCorr.ci
1 List_1 86.16 8.17 0.85 1.80
1 List_2 89.91 7.88 0.85 1.80
2 List_1 85.21 7.87 0.91 1.93
2 List_2 87.49 7.85 0.91 1.93
## plot
p3.day.Asc.all.plot.1 <- ggplot(data=p3.day.Asc.long.all, aes(x=Btw, y=aCorr, fill=cSrc)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .7, width = .65, colour="black", size = 1.02) +
  geom_point(position=position_dodge(0.65), aes(x=Btw, y=aCorr, group=cSrc, color=SN), size = 3, alpha = .4, show.legend = FALSE) +
  geom_segment(data=filter(p3.day.Asc.swide.all,Btw==1), inherit.aes = FALSE,
               aes(x=1-.16, y=filter(p3.day.Asc.swide.all,Btw==1)$"List_1",
                   xend=1+.16, yend=filter(p3.day.Asc.swide.all,Btw==1)$"List_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_segment(data=filter(p3.day.Asc.swide.all,Btw==2), inherit.aes = FALSE,
               aes(x=2-.16, y=filter(p3.day.Asc.swide.all,Btw==2)$"List_1",
                   xend=2+.16, yend=filter(p3.day.Asc.swide.all,Btw==2)$"List_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_pointrange(data=p3.day.Asc.g.all, aes(x = Btw, y = aCorr.M, ymin = aCorr.M-aCorr.ci, ymax = aCorr.M+aCorr.ci),
                  position = position_dodge(0.65), color = "darkred", size = 1, show.legend = FALSE) +
  scale_fill_manual(values = c("#feb24c", "#91bfdb"),
                    labels = c("List 1", "List 2")) +
  scale_x_discrete(labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(25, 100), clip = "on") +
  labs(x = "Group", y = "Accuracy (%)", fill ="Object List") +
  # ggtitle("Association Memory by Group") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"), 
        legend.position="top")

p3.day.Asc.all.plot.2 <- ggplot(data=p3.day.Asc.long.all, aes(x=cSrc, y=aCorr, fill=Btw)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .7, width = .65, colour="black", size = 1.02) +
  geom_point(position=position_dodge(0.65), aes(x=cSrc, y=aCorr, group=Btw, color=SN), size = 3, alpha = .4, show.legend = FALSE) +
  geom_pointrange(data=p3.day.Asc.g.all, aes(x = cSrc, y = aCorr.M, ymin = aCorr.M-aCorr.ci, ymax = aCorr.M+aCorr.ci),
                  position = position_dodge(0.65), color = "darkred", size = 1, show.legend = FALSE) +
  scale_fill_manual(values = c("#feb24c", "#91bfdb"),
                    labels = c("Experimental", "Control")) +
  scale_x_discrete(labels = c("List 1", "List 2")) +
  coord_cartesian(ylim = c(25, 100), clip = "on") +
  labs(x = "Object List", y = "Accuracy (%)", fill ="Group") +
  # ggtitle("Association Memory by Object List") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"), 
        legend.position="top")

ggpubr::ggarrange(p3.day.Asc.all.plot.1, p3.day.Asc.all.plot.2, ncol = 2, 
          labels=c("A) Association Memory by Group","B) Association Memory by List"),
          hjust = -0.1, vjust=1, font.label = list(size = 16))


2.2.3.1.1 혼합 요인 분산 분석

집단과 물체 목록을 요인으로 하는 2 X 2 혼합 요인 분산분석을 수행하였다.

p3.day.Asc.all.aov <- aov_ez(id = "SN", dv = "aCorr", data = p3.day.Asc.long.all, between = "Btw", within = c("cSrc"))
anova(p3.day.Asc.all.aov, es = "pes") %>% kable(digits=3)
num Df den Df MSE F pes Pr(>F)
Btw 1 34 107.497 0.477 0.014 0.494
cSrc 1 34 18.782 8.682 0.203 0.006
Btw:cSrc 1 34 18.782 0.513 0.015 0.479

분석 결과, 물체 목록의 주효과는 유의하였다.

p3.day.Asc.m1.all <- emmeans(p3.day.Asc.all.aov, pairwise ~ cSrc | Btw, type = "response")
p3.day.Asc.m1.all$contrasts %>% kable(digits=3)
contrast Btw estimate SE df t.ratio p.value
List_1 - List_2 1 -3.742 1.445 34 -2.590 0.014
List_1 - List_2 2 -2.278 1.445 34 -1.577 0.124

각 집단 별로 물체 목록에 대한 사후 분석을 수행한 결과, 실험 집단에서 목록 2목록 1보다 우수한 연합 기억 수행을 보였다.


2.2.3.1.2 일반화 선형 혼합 모형; GLMM


분산분석 결과를 보충하기 위해 집단과 물체 목록에서의 연합 기억 정확도 차이에 대한 일반화 선형 혼합 모형(일반화 선형 혼합 모형; GLMM)을 검증하였다. 집단과 물체 목록의 고정 효과(fixed effect)와 참가자와 자극 항목에 대한 무선 효과(random effect)를 포함한 모형 p3.12.Acc.exp.Model.1을 구성하였다.

p3.aCorr <- read.csv("MemUdt_PE_d3t6_m.csv", header = T) 
p3.aCorr <- p3.aCorr %>% filter(cSrc != 3, Resp != 3)
p3.aCorr$SN = factor(p3.aCorr$SN); p3.aCorr$Btw = factor(p3.aCorr$Btw)
p3.aCorr$cSrc = factor(p3.aCorr$cSrc, labels=c("List_1", "List_2"))
p3.aCorr$Resp <- factor(p3.aCorr$Resp, levels=c(1,2), labels=c("Day_1", "Day_2"))
(nc <- detectCores())
cl <- makeCluster(rep("localhost", nc))

p3.12.Acc.all.Model.1 <- afex::mixed(aCorr ~ Btw*cSrc + (1|SN) + (1|IMname), 
                              p3.aCorr, method = "LRT", cl = cl, 
                              family=binomial(link="logit"),
                              control = glmerControl(optCtrl = list(maxfun = 1e6), optimizer = "bobyqa"))

save(p3.12.Acc.all.Model.1, file="memudet_day3_12asc_Acc_afex.Rdata")

stopCluster(cl)
anova(p3.12.Acc.all.Model.1) %>% kable(digits=3)

분석 결과, 물체 목록의 주효과는 유의하였다.

p3.day.Asc.m3.all <- emmeans(p3.12.Acc.all.Model.1, pairwise ~ cSrc | Btw, type = "response")
p3.day.Asc.m3.all$contrasts %>% kable(digits=4)

각 집단에서 물체 목록에 대한 사후 분석을 수행한 결과, 실험 집단에서 목록 1의 연합 기억보다 목록 2의 연합 기억이 유의하게 우수하였다. 통제 집단에서도 유사한 경향이 나타났으나, 통계적으로 유의하지 않았다.


2.2.3.2 비대칭적 출처 반응에서의 연합 기억 정확도


물체 목록(목록 1, 목록 2)에서 집단과 출처 반응에 따라 연합 기억이 어떻게 나타나는지 살펴보기 위해, 각 조건에 대한 연합 기억 정확도 평균과 표준편차를 계산하였다. 아래의 그래프에서 A는 전체 집단, B, C는 각 집단을 나타내며, 빨간 점은 평균, 오차 막대는 95% 신뢰구간을 표시한다.


# long format
p3.AsyPtt.Asc.long.all <- p3 %>% filter(cSrc != "List_3", Resp != "New") %>% group_by(SN, Btw, cSrc, Resp) %>%
  summarise(aCorr = mean(aCorr)*100) %>% ungroup()
p3.AsyPtt.Asc.wide.all <- p3.AsyPtt.Asc.long.all %>% spread(key = Resp, value = aCorr)
p3.AsyPtt.Asc.long.all <- gather(p3.AsyPtt.Asc.wide.all, Resp, aCorr, Day_1:Day_2, factor_key=TRUE)
p3.AsyPtt.Asc.long.all[is.na(p3.AsyPtt.Asc.long.all)] <- 0 
p3.AsyPtt.Asc.long.all <- arrange(p3.AsyPtt.Asc.long.all, SN, cSrc, Resp, aCorr)
p3.AsyPtt.Asc.long.exp <- p3.AsyPtt.Asc.long.all %>% filter(Btw==1)
p3.AsyPtt.Asc.long.con <- p3.AsyPtt.Asc.long.all %>% filter(Btw==2)

# wide format
p3.AsyPtt.Asc.swide.all <- p3.AsyPtt.Asc.long.all %>% spread(key = Resp, value = aCorr)
p3.AsyPtt.Asc.swide.exp <- p3.AsyPtt.Asc.swide.all %>% filter(Btw==1)
p3.AsyPtt.Asc.swide.con <- p3.AsyPtt.Asc.swide.all %>% filter(Btw==2)

# summary
p3.AsyPtt.Asc.g.all <- p3.AsyPtt.Asc.long.all %>% group_by(Btw, cSrc, Resp) %>% 
  summarise(aCorr.M = mean(aCorr), aCorr.SD = sd(aCorr)) %>% ungroup()
p3.AsyPtt.Asc.g.all$aCorr.se <- Rmisc::summarySEwithin(data = p3.AsyPtt.Asc.long.all, measurevar = "aCorr", 
                                                       idvar = "SN", betweenvars = "Btw", withinvars = c("cSrc","Resp"))$se
p3.AsyPtt.Asc.g.all$aCorr.ci <- Rmisc::summarySEwithin(data = p3.AsyPtt.Asc.long.all, measurevar = "aCorr", 
                                                       idvar = "SN", betweenvars = "Btw", withinvars = c("cSrc","Resp"))$ci  
p3.AsyPtt.Asc.g.exp <- p3.AsyPtt.Asc.g.all %>% filter(Btw==1)
p3.AsyPtt.Asc.g.con <- p3.AsyPtt.Asc.g.all %>% filter(Btw==2)
p3.AsyPtt.Asc.g.table.all <- p3.AsyPtt.Asc.g.all %>% unite(cSrc_Resp, cSrc:Resp, remove=TRUE) %>% rename(sResp = "cSrc_Resp")
p3.AsyPtt.Asc.g.table.all$sResp[p3.AsyPtt.Asc.g.table.all$sResp=='List_1_Day_1'] <- 'List 1 Correct'
p3.AsyPtt.Asc.g.table.all$sResp[p3.AsyPtt.Asc.g.table.all$sResp=='List_2_Day_2'] <- 'List 2 Correct'
p3.AsyPtt.Asc.g.table.all$sResp[p3.AsyPtt.Asc.g.table.all$sResp=='List_1_Day_2'] <- 'Source Confusion'
p3.AsyPtt.Asc.g.table.all$sResp[p3.AsyPtt.Asc.g.table.all$sResp=='List_2_Day_1'] <- 'Intrusion'
p3.AsyPtt.Asc.g.table.all %>% arrange(c(1,3,4,2,5,7,8,6)) %>% kable(digit=2)
Btw sResp aCorr.M aCorr.SD aCorr.se aCorr.ci
1 List 1 Correct 87.36 7.15 1.36 2.87
1 List 2 Correct 91.18 9.58 1.36 2.88
1 Source Confusion 81.73 13.98 1.93 4.07
1 Intrusion 87.13 6.42 1.33 2.81
2 List 1 Correct 86.80 7.45 0.77 1.62
2 List 2 Correct 88.26 7.94 1.59 3.36
2 Source Confusion 80.93 10.20 1.62 3.43
2 Intrusion 85.03 10.53 1.60 3.37
## plot
p3.Asc.all.plot3 <- ggplot(data=p3.AsyPtt.Asc.long.all, aes(x=Resp, y=aCorr, fill=Btw)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .9, width = 0.8, colour="black", size = 1.02) +
  geom_pointrange(data=p3.AsyPtt.Asc.g.all, aes(x = Resp, y=aCorr.M, ymin = aCorr.M - aCorr.ci, ymax = aCorr.M + aCorr.ci),
                  position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
  facet_grid(.~cSrc, scales="free_x", 
             labeller = labeller(cSrc = c("List_1" = "List 1 (Day 1)","List_2" = "List 2 (Day 2)"))) +
  scale_x_discrete(labels=c("Day 1", "Day 2")) +
  scale_fill_manual(values = c("#feb24c", "#91bfdb"),
                    labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(0, 105), clip = "on") +
  labs(x = "Source Response by Object List", y = "Association Accuracy (%)", fill ="Group") +
  # ggtitle("Association Memory Response") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        strip.text.x = element_text(face = "plain", size = 15, color = "black"),
        strip.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
        panel.spacing=unit(1, "lines"),
        plot.margin = margin(1, 0.3, 1, 0.3, "cm"), 
        # plot.title = element_text(hjust = 0.5),
        legend.position="top")
p3.Asc.exp.plot3 <- ggplot(data=p3.AsyPtt.Asc.long.exp, aes(x=cSrc, y=aCorr, fill=Resp)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .7, width = .65, colour="black", size = 1.02) +
  geom_point(position=position_dodge(0.65), aes(x=cSrc, y=aCorr, group=Resp, color=SN), size = 3, alpha = .4, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.Asc.swide.exp,cSrc=="List_1"), inherit.aes = FALSE,
               aes(x=1-.16, y=filter(p3.AsyPtt.Asc.swide.exp,cSrc=="List_1")$"Day_1",
                   xend=1+.16, yend=filter(p3.AsyPtt.Asc.swide.exp,cSrc=="List_1")$"Day_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.Asc.swide.exp,cSrc=="List_2"), inherit.aes = FALSE,
               aes(x=2-.16, y=filter(p3.AsyPtt.Asc.swide.exp,cSrc=="List_2")$"Day_1",
                   xend=2+.16, yend=filter(p3.AsyPtt.Asc.swide.exp,cSrc=="List_2")$"Day_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_pointrange(data=p3.AsyPtt.Asc.g.exp, aes(x = cSrc, y = aCorr.M, ymin = aCorr.M-aCorr.ci, ymax = aCorr.M+aCorr.ci),
                  position = position_dodge(0.65), color = "darkred", size = 1, show.legend = FALSE) +
  scale_fill_manual(values = c("#56b4e9", "#e69f00", "#ff6164"),
                    labels = c("Day 1", "Day 2")) +
  scale_x_discrete(labels = c("List 1", "List 2")) +
  coord_cartesian(ylim = c(25, 100), clip = "on") +
  labs(x = "Object List", y = "Accuracy (%)", fill ="Attribution") +
  # ggtitle("Association Memory (Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"), 
        legend.position="top")
p3.Asc.con.plot3 <- ggplot(data=p3.AsyPtt.Asc.long.con, aes(x=cSrc, y=aCorr, fill=Resp)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .7, width = .65, colour="black", size = 1.02) +
  geom_point(position=position_dodge(0.65), aes(x=cSrc, y=aCorr, group=Resp, color=SN), size = 3, alpha = .4, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.Asc.swide.con,cSrc=="List_1"), inherit.aes = FALSE,
               aes(x=1-.16, y=filter(p3.AsyPtt.Asc.swide.con,cSrc=="List_1")$"Day_1",
                   xend=1+.16, yend=filter(p3.AsyPtt.Asc.swide.con,cSrc=="List_1")$"Day_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.Asc.swide.con,cSrc=="List_2"), inherit.aes = FALSE,
               aes(x=2-.16, y=filter(p3.AsyPtt.Asc.swide.con,cSrc=="List_2")$"Day_1",
                   xend=2+.16, yend=filter(p3.AsyPtt.Asc.swide.con,cSrc=="List_2")$"Day_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_pointrange(data=p3.AsyPtt.Asc.g.con, aes(x = cSrc, y = aCorr.M, ymin = aCorr.M-aCorr.ci, ymax = aCorr.M+aCorr.ci),
                  position = position_dodge(0.65), color = "darkred", size = 1, show.legend = FALSE) +
  scale_fill_manual(values = c("#56b4e9", "#e69f00", "#ff6164"),
                    labels = c("Day 1", "Day 2")) +
  scale_x_discrete(labels = c("List 1", "List 2")) +
  coord_cartesian(ylim = c(25, 100), clip = "on") +
  labs(x = "Object List", y = "Accuracy (%)", fill ="Attribution") +
  # ggtitle("Association Memory (Con)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"), 
        legend.position="top")
ggpubr::ggarrange(p3.Asc.all.plot3, labels = "A) All Group",
          ggpubr::ggarrange(p3.Asc.exp.plot3, p3.Asc.con.plot3, ncol = 2, labels = c("B) Experimental", "C) Control"),
                    hjust = -0.1, vjust=1, font.label = list(size = 16)), nrow = 2,
          hjust = -0.1, vjust=1, font.label = list(size = 16))


집단과 출처 반응에 따른 연합 기억 정확도의 차이를 살펴보기 위해, 집단과 출처 반응을 요인으로 한 2 X 4 혼합 요인 분산분석을 수행하였다.

# List 1 & 2 Association Memory by Source Response
p3.AsyPtt.Asc.long.all <- p3.AsyPtt.Asc.long.all %>% unite(cSrc_Resp, cSrc:Resp, remove=TRUE) %>% rename(sResp = "cSrc_Resp")
p3.AsyPtt.Asc.long.all$sResp[p3.AsyPtt.Asc.long.all$sResp=='List_1_Day_1'] <- 'List 1 Correct'
p3.AsyPtt.Asc.long.all$sResp[p3.AsyPtt.Asc.long.all$sResp=='List_2_Day_2'] <- 'List 2 Correct'
p3.AsyPtt.Asc.long.all$sResp[p3.AsyPtt.Asc.long.all$sResp=='List_1_Day_2'] <- 'Source Confusion'
p3.AsyPtt.Asc.long.all$sResp[p3.AsyPtt.Asc.long.all$sResp=='List_2_Day_1'] <- 'Intrusion'
p3.AsyPtt.Asc.long.all$sResp <- factor(p3.AsyPtt.Asc.long.all$sResp)

p3.AsyPtt.Asc.all.1.aov <- aov_ez(id = "SN", dv = "aCorr", data = p3.AsyPtt.Asc.long.all, between = "Btw", within = "sResp")
anova(p3.AsyPtt.Asc.all.1.aov, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 225.180 0.406 0.012 0.528
sResp 2.581 87.744 50.888 10.099 0.229 0.000
Btw:sResp 2.581 87.744 50.888 0.254 0.007 0.829

분석 결과, 출처 반응의 주효과가 유의하였다.

# source response contrast
p3.AsyPtt.Asc.m1.1.all <- emmeans(p3.AsyPtt.Asc.all.1.aov, pairwise ~ sResp | Btw, type = "response")
p3.AsyPtt.Asc.m1.1.all$contrasts %>% kable(digit=3)
contrast Btw estimate SE df t.ratio p.value
Intrusion - List.1.Correct 1 -0.230 1.691 34 -0.136 0.999
Intrusion - List.2.Correct 1 -4.059 2.202 34 -1.843 0.271
Intrusion - Source.Confusion 1 5.392 2.605 34 2.070 0.183
List.1.Correct - List.2.Correct 1 -3.829 1.894 34 -2.021 0.200
List.1.Correct - Source.Confusion 1 5.622 2.216 34 2.537 0.072
List.2.Correct - Source.Confusion 1 9.451 2.488 34 3.798 0.003
Intrusion - List.1.Correct 2 -1.770 1.691 34 -1.046 0.724
Intrusion - List.2.Correct 2 -3.230 2.202 34 -1.467 0.468
Intrusion - Source.Confusion 2 4.108 2.605 34 1.577 0.405
List.1.Correct - List.2.Correct 2 -1.461 1.894 34 -0.771 0.867
List.1.Correct - Source.Confusion 2 5.877 2.216 34 2.653 0.056
List.2.Correct - Source.Confusion 2 7.338 2.488 34 2.949 0.028

출처 반응에 따른 사후 분석을 수행한 결과, 실험 집단에서 List 2 Correct (L2>D2)Source Confusion (L1>D2) 보다 유의하게 높은 연합 기억 정확도를 보였다. 통제 집단에서도 이와 마찬가지로 List 2 Correct (L2>D2)Source Confusion (L1>D2) 보다 유의하게 높은 연합 기억 정확도를 보였다. Intrusion (L2>D1)Source Confusion (L1>D2), List 2 Correct (L2>D2) 간의 차이는 유의하지 않았다. 이 외에 다른 비교들도 유의하지 않았다.


분산 분석 결과를 보충하기 위해, 집단과 출처 반응을 고정 효과로 하고, 참가자와 자극의 무선 효과를 포함한 일반화 선형 혼합 모형을 검증하였다.

p3.aRsp <- read.csv("MemUdt_PE_d3t6_m.csv", header = T) 
p3.aRsp <- p3.aRsp %>% filter(cSrc != 3, Resp != 3)
p3.aRsp$SN = factor(p3.aRsp$SN); p3.aRsp$Btw = factor(p3.aRsp$Btw)
p3.aRsp$cSrc = factor(p3.aRsp$cSrc, labels=c("List_1", "List_2"))
p3.aRsp$Resp <- factor(p3.aRsp$Resp, levels=c(1,2), labels=c("Day_1", "Day_2"))
p3.aRsp <- p3.aRsp %>% select(SN, Btw, cSrc, Resp, IMname, Corr, aCorr) %>% 
  unite(cSrc_Resp, cSrc:Resp, remove=TRUE) %>% rename(sResp = "cSrc_Resp")
p3.aRsp$sResp[p3.aRsp$sResp=='List_1_Day_1'] <- 'List 1 Correct'
p3.aRsp$sResp[p3.aRsp$sResp=='List_2_Day_2'] <- 'List 2 Correct'
p3.aRsp$sResp[p3.aRsp$sResp=='List_1_Day_2'] <- 'Source Confusion'
p3.aRsp$sResp[p3.aRsp$sResp=='List_2_Day_1'] <- 'Intrusion'
(nc <- detectCores())
cl <- makeCluster(rep("localhost", nc))

p3.Asyptt.Asc.all.Model.1 <- afex::mixed(aCorr ~ Btw*sResp + (1|SN) + (1|IMname), 
                              p3.aRsp, method = "LRT", cl = cl, 
                              family=binomial(link="logit"),
                              control = glmerControl(optCtrl = list(maxfun = 1e6), optimizer = "bobyqa"))

save(p3.Asyptt.Asc.all.Model.1, file="memudet_day3_Asyptt_Asc_afex.Rdata")

stopCluster(cl)
anova(p3.Asyptt.Asc.all.Model.1) %>% kable(digits=3)

분석 결과, 출처 반응의 주효과가 유의하였다.

p3.Asyptt.Asc.m2.1.all <- emmeans(p3.Asyptt.Asc.all.Model.1, pairwise ~ sResp | Btw, type = "response")
p3.Asyptt.Asc.m2.1.all$contrasts %>% kable(digits=3)

사후 분석 결과, 실험 집단에서 List 1 Correct의 연합 기억이 Source Confusion, List 2 Correct보다 우수하였다. 또한 List 2 Correct의 연합 기억은 Source Confusion, Intrusion 보다 우수하였다. 통제 집단에서는 List 1 Correct의 연합 기억이 Source Confusion 보다 우수하였다. 그리고 List 2 Correct의 연합 기억이 Source Confusion 보다 우수하였다. 다른 비교는 유의하지 않았다.


2.2.3.3 예측 오류 조건에 따른 연합 기억 정확도


2.2.3.3.1 예측 오류에 따른 목록 1 연합 기억 정확도


목록 1에서 집단과 예측 오류 조건에 따라 연합 기억 수준이 다른지 살펴보았다. 각 조건의 평균과 표준편차를 계산하였다. 아래의 그래프에서 A는 전체 집단, B는 실험 집단, C는 통제 집단을 나타내며, 빨간 점은 평균, 빨간 리본은 95% 신뢰구간을 나타낸다.


## List 1 Association Memory
# long format
p3.Acc.Asc.long.all.0 <- p3 %>% filter(cPE != "pe0", cSrc == "List_1") %>% group_by(SN, Btw, cPE) %>% 
  summarise(aCorr = mean(aCorr)*100) %>% ungroup()
p3.Acc.Asc.long.exp.0 <- p3.Acc.Asc.long.all.0 %>% filter(Btw==1)
p3.Acc.Asc.long.con.0 <- p3.Acc.Asc.long.all.0 %>% filter(Btw==2)

# wide format
p3.Acc.Asc.swide.all.0 <- p3.Acc.Asc.long.all.0 %>% spread(key = cPE, value = aCorr)
p3.Acc.Asc.swide.exp.0 <- p3.Acc.Asc.swide.all.0 %>% filter(Btw==1)
p3.Acc.Asc.swide.con.0 <- p3.Acc.Asc.swide.all.0 %>% filter(Btw==2)

# summary
p3.Acc.Asc.g.all.0 <- p3.Acc.Asc.long.all.0 %>%  group_by(Btw, cPE) %>% 
  summarise(aCorr.M = mean(aCorr), aCorr.SD = sd(aCorr)) %>% ungroup() 
p3.Acc.Asc.g.all.0$aCorr.se <- Rmisc::summarySEwithin(data = p3.Acc.Asc.long.all.0, measurevar = "aCorr", 
                                                      idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$se
p3.Acc.Asc.g.all.0$aCorr.ci <- Rmisc::summarySEwithin(data = p3.Acc.Asc.long.all.0, measurevar = "aCorr", 
                                                      idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$ci
p3.Acc.Asc.g.exp.0 <- p3.Acc.Asc.g.all.0 %>% filter(Btw==1)
p3.Acc.Asc.g.con.0 <- p3.Acc.Asc.g.all.0 %>% filter(Btw==2)
p3.Acc.Asc.g.all.0 %>% kable(digit=2)
Btw cPE aCorr.M aCorr.SD aCorr.se aCorr.ci
1 pe1 82.59 13.21 1.96 4.14
1 pe2 84.26 10.77 1.81 3.82
1 pe3 83.70 11.93 1.53 3.23
2 pe1 82.41 12.20 2.23 4.71
2 pe2 81.67 10.74 1.73 3.64
2 pe3 79.81 10.87 2.11 4.46
## plot
p3.Asc.all.plot4.2.0 <- ggplot(p3.Acc.Asc.g.all.0, mapping=aes(x=cPE, y=aCorr.M, group=Btw)) + 
  geom_ribbon(aes(ymin=aCorr.M-aCorr.ci, ymax=aCorr.M+aCorr.ci, fill=Btw), alpha=0.3) + 
  geom_line(p3.Acc.Asc.g.all.0, mapping = aes(x=cPE, y=aCorr.M, color = Btw), size = 1, show.legend = FALSE) +
  geom_pointrange(aes(x = cPE, ymin=aCorr.M, ymax=aCorr.M, color=Btw), position = position_dodge(0), 
                  size = 0.8, show.legend = FALSE) +
  scale_fill_manual(values = c("#e69f00", "#56b4e9"), labels = c("Experimental", "Control")) +
  scale_color_manual(values = c("#e69f00", "#56b4e9")) +
  coord_cartesian(ylim = c(20, 100), clip = "on") +
  labs(x = "Prediction Error", y = "Association Accuracy (%)", fill = "Group") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 Correct SM (L1>D1; Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"),
        legend.position = "top")
p3.Asc.exp.plot4.2.0 <- ggplot(p3.Acc.Asc.g.exp.0, mapping=aes(x=cPE, y=aCorr.M, group=1)) + 
  geom_ribbon(aes(ymin=aCorr.M-aCorr.ci, ymax=aCorr.M+aCorr.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=aCorr.M, ymax=aCorr.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.Asc.long.exp.0, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=aCorr, group=SN, color=SN)) +
  geom_point(p3.Acc.Asc.long.exp.0, mapping = aes(x=cPE, y=aCorr, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(20, 100), clip = "on") +
  labs(x = "Prediction Error", y = "Association Accuracy (%)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 AM of Correct Source (Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
p3.Asc.con.plot4.2.0 <- ggplot(p3.Acc.Asc.g.con.0, mapping=aes(x=cPE, y=aCorr.M, group=1)) + 
  geom_ribbon(aes(ymin=aCorr.M-aCorr.ci, ymax=aCorr.M+aCorr.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=aCorr.M, ymax=aCorr.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.Asc.long.con.0, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=aCorr, group=SN, color=SN)) +
  geom_point(p3.Acc.Asc.long.con.0, mapping = aes(x=cPE, y=aCorr, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(20, 100), clip = "on") +
  labs(x = "Prediction Error", y = "Association Accuracy (%)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 AM of Correct Source (Con)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
ggpubr::ggarrange(p3.Asc.all.plot4.2.0, p3.Asc.exp.plot4.2.0, p3.Asc.con.plot4.2.0, ncol=3, 
          labels=c("A) All Group", "B) Experimental", "C) Control"),
          hjust = -0.1, vjust=1, font.label = list(size = 16))


집단과 예측 오류 조건을 요인으로 2 X 3 혼합 요인 분산분석을 수행하였다.


p3.Acc.all.aov.Asc.0 <- aov_ez(id = "SN", dv = "aCorr", data = p3.Acc.Asc.long.all.0, between = "Btw", within = "cPE")
anova(p3.Acc.all.aov.Asc.0, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 259.804 0.513 0.015 0.479
cPE 1.911 64.981 77.383 0.179 0.005 0.827
Btw:cPE 1.911 64.981 77.383 0.430 0.012 0.643

분석 결과, 모든 효과가 유의하지 않았다.


분산 분석 결과를 보충하기 위하여, 목록 1의 연합 기억 정확도에 대해 집단과 예측 오류 조건의 고정 효과와 참가자와 자극 항목의 무선 효과를 포함한 일반화 선형 혼합 모형을 검증하였다.

p3.L1.asc.corr <- p3 %>% filter(cSrc=="List_1", Resp != "New")
(nc <- detectCores())
cl <- makeCluster(rep("localhost", nc))

p3.L1.asc.corr.Model.1 <- afex::mixed(aCorr ~ Btw*cPE + (1|SN) + (1|IMname),
                             p3.L1.asc.corr, method = "LRT", cl = cl,
                             family=binomial(link="logit"),
                             control = glmerControl(optCtrl = list(maxfun = 1e6)))

save(p3.L1.asc.corr.Model.1, file="memudet_day3_L1asc_corr.Rdata")
stopCluster(cl)
anova(p3.L1.asc.corr.Model.1) %>% kable(digit=3)

분석 결과, 모든 효과가 유의하지 않았다.


2.2.3.3.2 예측 오류에 따른 목록 2 연합 기억 정확도


목록 2에서 집단과 예측 오류 조건에 따라 연합 기억 수준이 다른지 살펴보았다. 각 조건의 평균과 표준편차를 계산하였다. 아래의 그래프에서 A는 전체 집단, B는 실험 집단, C는 통제 집단을 나타내며, 빨간 점은 평균, 빨간 리본은 95% 신뢰구간을 나타낸다.


## List 2 Association Memory
# long format
p3.Acc.Asc.long.all.0.2 <- p3 %>% filter(cPE != "pe0", cSrc == "List_2") %>% group_by(SN, Btw, cPE) %>% 
  summarise(aCorr = mean(aCorr)*100) %>% ungroup()
p3.Acc.Asc.long.exp.0.2 <- p3.Acc.Asc.long.all.0.2 %>% filter(Btw==1)
p3.Acc.Asc.long.con.0.2 <- p3.Acc.Asc.long.all.0.2 %>% filter(Btw==2)

# wide format
p3.Acc.Asc.swide.all.0.2 <- p3.Acc.Asc.long.all.0.2 %>% spread(key = cPE, value = aCorr)
p3.Acc.Asc.swide.exp.0.2 <- p3.Acc.Asc.swide.all.0.2 %>% filter(Btw==1)
p3.Acc.Asc.swide.con.0.2 <- p3.Acc.Asc.swide.all.0.2 %>% filter(Btw==2)

# summary
p3.Acc.Asc.g.all.0.2 <- p3.Acc.Asc.long.all.0.2 %>%  group_by(Btw, cPE) %>% 
  summarise(aCorr.M = mean(aCorr), aCorr.SD = sd(aCorr)) %>% ungroup() 
p3.Acc.Asc.g.all.0.2$aCorr.se <- Rmisc::summarySEwithin(data = p3.Acc.Asc.long.all.0.2, measurevar = "aCorr", 
                                                      idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$se
p3.Acc.Asc.g.all.0.2$aCorr.ci <- Rmisc::summarySEwithin(data = p3.Acc.Asc.long.all.0.2, measurevar = "aCorr", 
                                                      idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$ci
p3.Acc.Asc.g.exp.0.2 <- p3.Acc.Asc.g.all.0.2 %>% filter(Btw==1)
p3.Acc.Asc.g.con.0.2 <- p3.Acc.Asc.g.all.0.2 %>% filter(Btw==2)
p3.Acc.Asc.g.all.0.2 %>% kable(digit=2)
Btw cPE aCorr.M aCorr.SD aCorr.se aCorr.ci
1 pe1 88.52 13.44 2.08 4.39
1 pe2 87.96 9.30 2.13 4.49
1 pe3 87.59 10.89 1.08 2.28
2 pe1 84.44 9.29 1.46 3.08
2 pe2 83.15 10.45 1.88 3.96
2 pe3 85.56 12.05 2.01 4.23
## plot
p3.Asc.all.plot4.2.0.2 <- ggplot(p3.Acc.Asc.g.all.0.2, mapping=aes(x=cPE, y=aCorr.M, group=Btw)) + 
  geom_ribbon(aes(ymin=aCorr.M-aCorr.ci, ymax=aCorr.M+aCorr.ci, fill=Btw), alpha=0.3) + 
  geom_line(p3.Acc.Asc.g.all.0.2, mapping = aes(x=cPE, y=aCorr.M, color = Btw), size = 1, show.legend = FALSE) +
  geom_pointrange(aes(x = cPE, ymin=aCorr.M, ymax=aCorr.M, color=Btw), position = position_dodge(0), 
                  size = 0.8, show.legend = FALSE) +
  scale_fill_manual(values = c("#e69f00", "#56b4e9"), labels = c("Experimental", "Control")) +
  scale_color_manual(values = c("#e69f00", "#56b4e9")) +
  coord_cartesian(ylim = c(20, 100), clip = "on") +
  labs(x = "Prediction Error", y = "Association Accuracy (%)", fill = "Group") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 Correct SM (L2>D1; Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"),
        legend.position = "top")
p3.Asc.exp.plot4.2.0.2 <- ggplot(p3.Acc.Asc.g.exp.0.2, mapping=aes(x=cPE, y=aCorr.M, group=1)) + 
  geom_ribbon(aes(ymin=aCorr.M-aCorr.ci, ymax=aCorr.M+aCorr.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=aCorr.M, ymax=aCorr.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.Asc.long.exp.0.2, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=aCorr, group=SN, color=SN)) +
  geom_point(p3.Acc.Asc.long.exp.0.2, mapping = aes(x=cPE, y=aCorr, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(20, 100), clip = "on") +
  labs(x = "Prediction Error", y = "Association Accuracy (%)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 AM of Correct Source (Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
p3.Asc.con.plot4.2.0.2 <- ggplot(p3.Acc.Asc.g.con.0.2, mapping=aes(x=cPE, y=aCorr.M, group=1)) + 
  geom_ribbon(aes(ymin=aCorr.M-aCorr.ci, ymax=aCorr.M+aCorr.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=aCorr.M, ymax=aCorr.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.Asc.long.con.0.2, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=aCorr, group=SN, color=SN)) +
  geom_point(p3.Acc.Asc.long.con.0.2, mapping = aes(x=cPE, y=aCorr, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(20, 100), clip = "on") +
  labs(x = "Prediction Error", y = "Association Accuracy (%)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 AM of Correct Source (Con)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
ggpubr::ggarrange(p3.Asc.all.plot4.2.0.2, p3.Asc.exp.plot4.2.0.2, p3.Asc.con.plot4.2.0.2, ncol=3, 
          labels=c("A) All Group", "B) Experimental", "C) Control"),
          hjust = -0.1, vjust=1, font.label = list(size = 16))


집단과 예측 오류 조건을 요인으로 2 X 3 혼합 요인 분산분석을 수행하였다.


p3.Acc.all.aov.Asc.0.2 <- aov_ez(id = "SN", dv = "aCorr", data = p3.Acc.Asc.long.all.0.2, between = "Btw", within = "cPE")
anova(p3.Acc.all.aov.Asc.0.2, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 230.071 1.557 0.044 0.221
cPE 1.881 63.951 70.758 0.172 0.005 0.830
Btw:cPE 1.881 63.951 70.758 0.280 0.008 0.743

분석 결과, 모든 효과가 유의하지 않았다.


분산 분석 결과를 보충하기 위하여, 목록 1의 연합 기억 정확도에 대해 집단과 예측 오류 조건의 고정 효과와 참가자와 자극 항목의 무선 효과를 포함한 일반화 선형 혼합 모형을 검증하였다.

p3.L2.asc.corr <- p3 %>% filter(cSrc=="List_2", Resp != "New")
(nc <- detectCores())
cl <- makeCluster(rep("localhost", nc))

p3.L2.asc.corr.Model.1 <- afex::mixed(aCorr ~ Btw*cPE + (1|SN) + (1|IMname),
                                      p3.L2.asc.corr, method = "LRT", cl = cl,
                                      family=binomial(link="logit"),
                                      control = glmerControl(optCtrl = list(maxfun = 1e6)))

save(p3.L2.asc.corr.Model.1, file="memudet_day3_L2asc_corr.Rdata")
stopCluster(cl)
anova(p3.L2.asc.corr.Model.1) %>% kable(digit=3)

분석 결과, 모든 효과가 유의하지 않았다.


2.2.3.3.3 출처 반응에 따른 연합 기억 정확도


집단, 예측 오류 조건에 따른 연합 기억 정확도가 출처 반응의 유형에 따라 다른지 살펴보기 위한 분석을 수행하였다. 출처 기억 확신도 분석과 유사하게 각 출처 반응을 예측 오류 조건으로 구분하였을 때 시행수가 충분하지 않은 경우에는 연합 기억 정확도의 평균이 대표성을 가지지 못할 수 있다. 따라서 각 출처 반응에서의 시행수를 확인하였다.

# The number of trials per condition
p3 %>% filter(cSrc!="List_3", Resp!="New") %>% 
  group_by(SN, cSrc, Resp, cPE) %>% 
  summarise(NumTrial = length(aCorr)) %>% 
  ungroup %>% 
  group_by(cSrc, Resp, cPE) %>%
  summarise(Avg = mean(NumTrial), 
            Med = median(NumTrial), 
            Min = min(NumTrial), 
            Max = max(NumTrial)) %>% 
  ungroup %>% kable(digit=4)
cSrc Resp cPE Avg Med Min Max
List_1 Day_1 pe1 21.4722 22.0 13 30
List_1 Day_1 pe2 22.5278 22.0 10 30
List_1 Day_1 pe3 22.0833 22.5 15 28
List_1 Day_2 pe1 7.9714 8.0 1 17
List_1 Day_2 pe2 6.4571 6.0 1 15
List_1 Day_2 pe3 6.3333 6.0 2 15
List_2 Day_1 pe1 7.8056 7.5 2 15
List_2 Day_1 pe2 9.1111 9.0 2 17
List_2 Day_1 pe3 8.9722 9.0 1 19
List_2 Day_2 pe1 21.3889 22.0 12 28
List_2 Day_2 pe2 19.8333 20.0 13 27
List_2 Day_2 pe3 20.2778 20.0 10 28

각 출처 반응의 시행수에서 Source Confusion (L1>D2), Intrusion (L2>D1)은 평균 시행수가 10시행에 미치지 못하므로 분석에서 제외하였다. 따라서 출처 반응의 종속 변인 중 List 1 Correct (L1>D1), List 2 Correct (L2>D2)에서 집단과 예측 오류 조건에 따른 차이를 비교하였다.


2.2.3.3.3.1 목록 1 정확반응의 연합 기억 정확도


List 1 Correct (L1>D1) 출처 반응에서 집단과 예측 오류 조건에 따라 연합 기억 수준이 다른지 살펴보았다. 각 조건의 평균과 표준편차를 계산하였다. 아래의 그래프에서 A는 전체 집단, B는 실험 집단, C는 통제 집단을 나타내며, 빨간 점은 평균, 빨간 리본은 95% 신뢰구간을 나타낸다.


## List 1 Association Memory of Correct Response
# long format
p3.Acc.Asc.long.all.1 <- p3 %>% filter(cPE != "pe0", Correct == 1, cSrc == "List_1") %>% group_by(SN, Btw, cPE) %>% 
  summarise(aCorr = mean(aCorr)*100) %>% ungroup()
p3.Acc.Asc.long.exp.1 <- p3.Acc.Asc.long.all.1 %>% filter(Btw==1)
p3.Acc.Asc.long.con.1 <- p3.Acc.Asc.long.all.1 %>% filter(Btw==2)

# wide format
p3.Acc.Asc.swide.all.1 <- p3.Acc.Asc.long.all.1 %>% spread(key = cPE, value = aCorr)
p3.Acc.Asc.swide.exp.1 <- p3.Acc.Asc.swide.all.1 %>% filter(Btw==1)
p3.Acc.Asc.swide.con.1 <- p3.Acc.Asc.swide.all.1 %>% filter(Btw==2)

# summary
p3.Acc.Asc.g.all.1 <- p3.Acc.Asc.long.all.1 %>%  group_by(Btw, cPE) %>% 
  summarise(aCorr.M = mean(aCorr), aCorr.SD = sd(aCorr)) %>% ungroup() 
p3.Acc.Asc.g.all.1$aCorr.se <- Rmisc::summarySEwithin(data = p3.Acc.Asc.long.all.1, measurevar = "aCorr", 
                                                      idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$se
p3.Acc.Asc.g.all.1$aCorr.ci <- Rmisc::summarySEwithin(data = p3.Acc.Asc.long.all.1, measurevar = "aCorr", 
                                                      idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$ci
p3.Acc.Asc.g.exp.1 <- p3.Acc.Asc.g.all.1 %>% filter(Btw==1)
p3.Acc.Asc.g.con.1 <- p3.Acc.Asc.g.all.1 %>% filter(Btw==2)
p3.Acc.Asc.g.all.1 %>% kable(digit=2)
Btw cPE aCorr.M aCorr.SD aCorr.se aCorr.ci
1 pe1 84.73 11.06 2.18 4.61
1 pe2 89.24 10.22 2.47 5.22
1 pe3 88.21 10.80 1.87 3.95
2 pe1 85.36 11.41 2.19 4.63
2 pe2 86.25 10.40 1.77 3.74
2 pe3 88.30 10.36 2.33 4.92
## plot
p3.Asc.all.plot4.2.1 <- ggplot(p3.Acc.Asc.g.all.1, mapping=aes(x=cPE, y=aCorr.M, group=Btw)) + 
  geom_ribbon(aes(ymin=aCorr.M-aCorr.ci, ymax=aCorr.M+aCorr.ci, fill=Btw), alpha=0.3) + 
  geom_line(p3.Acc.Asc.g.all.1, mapping = aes(x=cPE, y=aCorr.M, color = Btw), size = 1, show.legend = FALSE) +
  geom_pointrange(aes(x = cPE, ymin=aCorr.M, ymax=aCorr.M, color=Btw), position = position_dodge(0), 
                  size = 0.8, show.legend = FALSE) +
  scale_fill_manual(values = c("#e69f00", "#56b4e9"), labels = c("Experimental", "Control")) +
  scale_color_manual(values = c("#e69f00", "#56b4e9")) +
  coord_cartesian(ylim = c(20, 100), clip = "on") +
  labs(x = "Prediction Error", y = "Association Accuracy (%)", fill = "Group") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 Correct SM (L1>D1; Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"),
        legend.position = "top")
p3.Asc.exp.plot4.2.1 <- ggplot(p3.Acc.Asc.g.exp.1, mapping=aes(x=cPE, y=aCorr.M, group=1)) + 
  geom_ribbon(aes(ymin=aCorr.M-aCorr.ci, ymax=aCorr.M+aCorr.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=aCorr.M, ymax=aCorr.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.Asc.long.exp.1, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=aCorr, group=SN, color=SN)) +
  geom_point(p3.Acc.Asc.long.exp.1, mapping = aes(x=cPE, y=aCorr, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(20, 100), clip = "on") +
  labs(x = "Prediction Error", y = "Association Accuracy (%)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 AM of Correct Source (Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
p3.Asc.con.plot4.2.1 <- ggplot(p3.Acc.Asc.g.con.1, mapping=aes(x=cPE, y=aCorr.M, group=1)) + 
  geom_ribbon(aes(ymin=aCorr.M-aCorr.ci, ymax=aCorr.M+aCorr.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=aCorr.M, ymax=aCorr.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.Asc.long.con.1, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=aCorr, group=SN, color=SN)) +
  geom_point(p3.Acc.Asc.long.con.1, mapping = aes(x=cPE, y=aCorr, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(20, 100), clip = "on") +
  labs(x = "Prediction Error", y = "Association Accuracy (%)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 AM of Correct Source (Con)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
ggpubr::ggarrange(p3.Asc.all.plot4.2.1, p3.Asc.exp.plot4.2.1, p3.Asc.con.plot4.2.1, ncol=3, 
          labels=c("A) All Group", "B) Experimental", "C) Control"),
          hjust = -0.1, vjust=1, font.label = list(size = 16))


집단과 예측 오류 조건을 요인으로 2 X 3 혼합 요인 분산분석을 수행하였다.


p3.Acc.all.aov.Asc.1 <- aov_ez(id = "SN", dv = "aCorr", data = p3.Acc.Asc.long.all.1, between = "Btw", within = "cPE")
anova(p3.Acc.all.aov.Asc.1, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 157.067 0.098 0.003 0.756
cPE 1.997 67.897 93.897 1.141 0.032 0.325
Btw:cPE 1.997 67.897 93.897 0.366 0.011 0.695

분석 결과, 모든 효과가 유의하지 않았다.


분산 분석 결과를 보충하기 위하여, List 1 Correct의 연합 기억 정확도에 대해 집단과 예측 오류 조건의 고정 효과와 참가자와 자극 항목의 무선 효과를 포함한 일반화 선형 혼합 모형을 검증하였다.

p3.L1.asc.corr.1 <- read.csv("MemUdt_PE_d3t6_m.csv", header = T) 
p3.L1.asc.corr.1 <- p3.L1.asc.corr.1 %>% filter(cSrc == 1, Resp != 3, cPE != 0, Corr==1)
p3.L1.asc.corr.1$SN = factor(p3.L1.asc.corr.1$SN); p3.L1.asc.corr.1$Btw = factor(p3.L1.asc.corr.1$Btw)
p3.L1.asc.corr.1$cSrc = factor(p3.L1.asc.corr.1$cSrc, labels=c("List_1"))
p3.L1.asc.corr.1$cPE = factor(p3.L1.asc.corr.1$cPE, levels=c(1,2,3), labels=c("pe1","pe2","pe3"))
p3.L1.asc.corr.1$Resp <- factor(p3.L1.asc.corr.1$Resp, labels=c("Day_1"))
p3.L1.asc.corr.1$aCorr <- as.numeric(p3.L1.asc.corr.1$aCorr==1)
(nc <- detectCores())
cl <- makeCluster(rep("localhost", nc))

p3.L1.asc.corr.Model.2 <- afex::mixed(aCorr ~ Btw*cPE + (1|SN) + (1|IMname),
                             p3.L1.asc.corr.1, method = "LRT", cl = cl,
                             family=binomial(link="logit"),
                             control = glmerControl(optCtrl = list(maxfun = 1e6)))

save(p3.L1.asc.corr.Model.2, file="memudet_day3_L1corrL1asc_corr.Rdata")
stopCluster(cl)
anova(p3.L1.asc.corr.Model.2) %>% kable(digit=3)

분석 결과, 모든 효과가 유의하지 않았다.


2.2.3.3.3.2 목록 2 정확반응의 연합 기억 정확도


List 2 Correct (L2>D2) 출처 반응에서 집단과 예측 오류 조건에 따라 연합 기억 수준이 다른지 살펴보았다. 각 조건의 평균과 표준편차를 계산하였다. 아래의 그래프에서 A는 전체 집단, B는 실험 집단, C는 통제 집단을 나타내며, 빨간 점은 평균, 빨간 리본은 95% 신뢰구간을 나타낸다.


## List 2 Association Memory of Correct Source Response
# long format
p3.Acc.Asc.long.all.2 <- p3 %>% filter(cPE != "pe0", Correct == 1, cSrc == "List_2") %>% group_by(SN, Btw, cPE) %>% 
  summarise(aCorr = mean(aCorr)*100) %>% ungroup()
p3.Acc.Asc.long.exp.2 <- p3.Acc.Asc.long.all.2 %>% filter(Btw==1)
p3.Acc.Asc.long.con.2 <- p3.Acc.Asc.long.all.2 %>% filter(Btw==2)

# wide format
p3.Acc.Asc.swide.all.2 <- p3.Acc.Asc.long.all.2 %>% spread(key = cPE, value = aCorr)
p3.Acc.Asc.swide.exp.2 <- p3.Acc.Asc.swide.all.2 %>% filter(Btw==1)
p3.Acc.Asc.swide.con.2 <- p3.Acc.Asc.swide.all.2 %>% filter(Btw==2)

# summary
p3.Acc.Asc.g.all.2 <- p3.Acc.Asc.long.all.2 %>%  group_by(Btw, cPE) %>% 
  summarise(aCorr.M = mean(aCorr), aCorr.SD = sd(aCorr)) %>% ungroup() 
p3.Acc.Asc.g.all.2$aCorr.se <- Rmisc::summarySEwithin(data = p3.Acc.Asc.long.all.2, measurevar = "aCorr", 
                                                      idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$se
p3.Acc.Asc.g.all.2$aCorr.ci <- Rmisc::summarySEwithin(data = p3.Acc.Asc.long.all.2, measurevar = "aCorr", 
                                                      idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$ci
p3.Acc.Asc.g.exp.2 <- p3.Acc.Asc.g.all.2 %>% filter(Btw==1)
p3.Acc.Asc.g.con.2 <- p3.Acc.Asc.g.all.2 %>% filter(Btw==2)
p3.Acc.Asc.g.all.2 %>% kable(digit=2)
Btw cPE aCorr.M aCorr.SD aCorr.se aCorr.ci
1 pe1 91.69 13.20 2.03 4.29
1 pe2 92.55 7.64 1.69 3.56
1 pe3 89.34 13.39 1.93 4.07
2 pe1 88.62 7.89 1.45 3.06
2 pe2 88.84 9.67 1.50 3.17
2 pe3 88.25 11.33 1.74 3.66
## plot
p3.Asc.all.plot4.2.2 <- ggplot(p3.Acc.Asc.g.all.2, mapping=aes(x=cPE, y=aCorr.M, group=Btw)) + 
  geom_ribbon(aes(ymin=aCorr.M-aCorr.ci, ymax=aCorr.M+aCorr.ci, fill=Btw), alpha=0.3) + 
  geom_line(p3.Acc.Asc.g.all.2, mapping = aes(x=cPE, y=aCorr.M, color = Btw), size = 1, show.legend = FALSE) +
  geom_pointrange(aes(x = cPE, ymin=aCorr.M, ymax=aCorr.M, color=Btw), position = position_dodge(0), 
                  size = 0.8, show.legend = FALSE) +
  scale_fill_manual(values = c("#e69f00", "#56b4e9"), labels = c("Experimental", "Control")) +
  scale_color_manual(values = c("#e69f00", "#56b4e9")) +
  coord_cartesian(ylim = c(20, 100), clip = "on") +
  labs(x = "Prediction Error", y = "Association Accuracy (%)", fill = "Group") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 Correct SM (L1>D1; Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"),
        legend.position = "top")
p3.Asc.exp.plot4.2.2 <- ggplot(p3.Acc.Asc.g.exp.2, mapping=aes(x=cPE, y=aCorr.M, group=1)) + 
  geom_ribbon(aes(ymin=aCorr.M-aCorr.ci, ymax=aCorr.M+aCorr.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=aCorr.M, ymax=aCorr.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.Asc.long.exp.2, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=aCorr, group=SN, color=SN)) +
  geom_point(p3.Acc.Asc.long.exp.2, mapping = aes(x=cPE, y=aCorr, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(20, 100), clip = "on") +
  labs(x = "Prediction Error", y = "Association Accuracy (%)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 2 AM of Correct Source (Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
p3.Asc.con.plot4.2.2 <- ggplot(p3.Acc.Asc.g.con.2, mapping=aes(x=cPE, y=aCorr.M, group=1)) + 
  geom_ribbon(aes(ymin=aCorr.M-aCorr.ci, ymax=aCorr.M+aCorr.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=aCorr.M, ymax=aCorr.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.Asc.long.con.2, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=aCorr, group=SN, color=SN)) +
  geom_point(p3.Acc.Asc.long.con.2, mapping = aes(x=cPE, y=aCorr, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(20, 100), clip = "on") +
  labs(x = "Prediction Error", y = "Association Accuracy (%)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 2 AM of Correct Source (Con)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
ggpubr::ggarrange(p3.Asc.all.plot4.2.2, p3.Asc.exp.plot4.2.2, p3.Asc.con.plot4.2.2, ncol=3, 
          labels=c("A) All Group", "B) Experimental", "C) Control"),
          hjust = -0.1, vjust=1, font.label = list(size = 16))


집단과 예측 오류를 요인으로 하는 2 X 3 혼합 요인 분산분석을 수행하였다.


p3.Acc.all.aov.Asc.2 <- aov_ez(id = "SN", dv = "aCorr", data = p3.Acc.Asc.long.all.2, between = "Btw", within = "cPE")
anova(p3.Acc.all.aov.Asc.2, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.00 34.000 226.160 0.820 0.024 0.372
cPE 1.95 66.294 62.553 0.564 0.016 0.567
Btw:cPE 1.95 66.294 62.553 0.275 0.008 0.755

분석 결과, 모든 효과가 유의하지 않았다.


분산 분석 결과를 보충하기 위하여, List 1 Correct의 연합 기억 정확도에 대해 집단과 예측 오류 조건의 고정 효과와 참가자와 자극 항목의 무선 효과를 포함한 일반화 선형 혼합 모형을 검증하였다.

p3.L2.asc.corr.1 <- read.csv("MemUdt_PE_d3t6_m.csv", header = T) 
p3.L2.asc.corr.1 <- p3.L2.asc.corr.1 %>% filter(cSrc == 2, Resp != 3, cPE != 0, Corr==1)
p3.L2.asc.corr.1$SN = factor(p3.L2.asc.corr.1$SN); p3.L2.asc.corr.1$Btw = factor(p3.L2.asc.corr.1$Btw)
p3.L2.asc.corr.1$cSrc = factor(p3.L2.asc.corr.1$cSrc, labels=c("List_2"))
p3.L2.asc.corr.1$cPE = factor(p3.L2.asc.corr.1$cPE, levels=c(1,2,3), labels=c("pe1","pe2","pe3"))
p3.L2.asc.corr.1$Resp <- factor(p3.L2.asc.corr.1$Resp, labels=c("Day_2"))
p3.L2.asc.corr.1$aCorr <- as.numeric(p3.L2.asc.corr.1$aCorr==1)
(nc <- detectCores())
cl <- makeCluster(rep("localhost", nc))

p3.L2.asc.corr.Model.1 <- afex::mixed(aCorr ~ Btw*cPE + (1|SN) + (1|IMname),
                             p3.L2.asc.corr.1, method = "LRT", cl = cl,
                             family=binomial(link="logit"),
                             control = glmerControl(optCtrl = list(maxfun = 1e6)))

save(p3.L2.asc.corr.Model.1, file="memudet_day3_L2corrL2asc_corr.Rdata")
stopCluster(cl)
anova(p3.L2.asc.corr.Model.1) %>% kable(digit=3)

분석 결과, 모든 효과가 유의하지 않았다.



2.2.4 Day 3 연합 기억 확신도


2.2.4.1 집단과 목록에 따른 연합 기억 확신도


각 집단과 물체 목록 조건에서의 연합 기억 확신도 평균과 표준편차를 계산하였다. 아래 그래프에서 x 축은 집단, y 축은 확신도 평정을 나타내며, 색은 각 물체 목록을 표시한다. 빨간 점은 평균, 오차 막대는 95% 신뢰구간을 나타낸다.


# long format
p3.day.Asc.conf.long.all <- p3 %>% filter(cSrc != "List_3", Resp != "New") %>% group_by(SN, Btw, cSrc) %>% 
  summarise(aConf = mean(aConf)) %>% ungroup
p3.day.Asc.conf.long.exp <- p3.day.Asc.conf.long.all %>% filter(Btw==1)
p3.day.Asc.conf.long.con <- p3.day.Asc.conf.long.all %>% filter(Btw==2)

# wide format
p3.day.Asc.conf.swide.all <- p3.day.Asc.conf.long.all %>% spread(key = cSrc, value = aConf)
p3.day.Asc.conf.swide.exp <- p3.day.Asc.conf.swide.all %>% filter(Btw==1)
p3.day.Asc.conf.swide.con <- p3.day.Asc.conf.swide.all %>% filter(Btw==2)

# summary
p3.day.Asc.conf.g.all <- p3.day.Asc.conf.long.all %>% group_by(Btw, cSrc) %>% 
  summarise(aConf.M = mean(aConf), aConf.SD = sd(aConf)) %>% ungroup()
p3.day.Asc.conf.g.all$aConf.se <- Rmisc::summarySEwithin(data = p3.day.Asc.conf.long.all, measurevar = "aConf", 
                                                    idvar = "SN", betweenvars = "Btw", withinvars = "cSrc")$se
p3.day.Asc.conf.g.all$aConf.ci <- Rmisc::summarySEwithin(data = p3.day.Asc.conf.long.all, measurevar = "aConf", 
                                                    idvar = "SN", betweenvars = "Btw", withinvars = "cSrc")$ci  
p3.day.Asc.conf.g.exp <- p3.day.Asc.conf.g.all %>% filter(Btw==1)
p3.day.Asc.conf.g.con <- p3.day.Asc.conf.g.all %>% filter(Btw==2)
p3.day.Asc.conf.g.all %>% kable(digit=2)
Btw cSrc aConf.M aConf.SD aConf.se aConf.ci
1 List_1 3.51 0.38 0.03 0.06
1 List_2 3.57 0.39 0.03 0.06
2 List_1 3.48 0.33 0.03 0.07
2 List_2 3.53 0.34 0.03 0.07
## plot
p3.day.Asc.conf.all.plot.1 <- ggplot(data=p3.day.Asc.conf.long.all, aes(x=Btw, y=aConf, fill=cSrc)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .7, width = .65, colour="black", size = 1.02) +
  geom_point(position=position_dodge(0.65), aes(x=Btw, y=aConf, group=cSrc, color=SN), size = 3, alpha = .4, show.legend = FALSE) +
  geom_segment(data=filter(p3.day.Asc.conf.swide.all,Btw==1), inherit.aes = FALSE,
               aes(x=1-.16, y=filter(p3.day.Asc.conf.swide.all,Btw==1)$"List_1",
                   xend=1+.16, yend=filter(p3.day.Asc.conf.swide.all,Btw==1)$"List_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_segment(data=filter(p3.day.Asc.conf.swide.all,Btw==2), inherit.aes = FALSE,
               aes(x=2-.16, y=filter(p3.day.Asc.conf.swide.all,Btw==2)$"List_1",
                   xend=2+.16, yend=filter(p3.day.Asc.conf.swide.all,Btw==2)$"List_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_pointrange(data=p3.day.Asc.conf.g.all, aes(x = Btw, y = aConf.M, ymin = aConf.M-aConf.ci, ymax = aConf.M+aConf.ci),
                  position = position_dodge(0.65), color = "darkred", size = 1, show.legend = FALSE) +
  scale_fill_manual(values = c("#feb24c", "#91bfdb"),
                    labels = c("List 1", "List 2")) +
  scale_x_discrete(labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Group", y = "Confidence Rating (1-4)", fill ="Object List") +
  # ggtitle("Association Memory (Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"), 
        legend.position="top")
p3.day.Asc.conf.all.plot.2 <- ggplot(data=p3.day.Asc.conf.long.all, aes(x=cSrc, y=aConf, fill=Btw)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .7, width = .65, colour="black", size = 1.02) +
  geom_point(position=position_dodge(0.65), aes(x=cSrc, y=aConf, group=Btw, color=SN), size = 3, alpha = .4, show.legend = FALSE) +
  geom_pointrange(data=p3.day.Asc.conf.g.all, aes(x = cSrc, y = aConf.M, ymin = aConf.M-aConf.ci, ymax = aConf.M+aConf.ci),
                  position = position_dodge(0.65), color = "darkred", size = 1, show.legend = FALSE) +
  scale_fill_manual(values = c("#feb24c", "#91bfdb"),
                    labels = c("Experimental", "Control")) +
  scale_x_discrete(labels = c("List 1", "List 2")) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Object List", y = "Confidence Rating (1-4)", fill ="Group") +
  # ggtitle("Association Memory by Object List") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"), 
        legend.position="top")

ggpubr::ggarrange(p3.day.Asc.conf.all.plot.1, p3.day.Asc.conf.all.plot.2, ncol = 2, 
          labels=c("A) Association Confidence by Group","B) Association Confidence by List"),
          hjust = -0.1, vjust=1, font.label = list(size = 16))

집단과 물체 목록을 요인으로 하는 2 X 2 혼합 요인 분산분석을 수행하였다.

p3.day.Asc.conf.all.aov <- aov_ez(id = "SN", dv = "aConf", data = p3.day.Asc.conf.long.all, between = "Btw", within = c("cSrc"))
anova(p3.day.Asc.conf.all.aov, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1 34 0.235 0.101 0.003 0.753
cSrc 1 34 0.023 2.677 0.073 0.111
Btw:cSrc 1 34 0.023 0.031 0.001 0.861

분석 결과, 모든 효과가 유의하지 않았다.



2.2.4.2 비대칭적 출처 반응에서의 연합 기억 확신도


연합 기억 확신도가 집단과 출처 반응의 패턴에서 차이를 보이는지 분석하였다. 각 조건별로 연합 기억 확신도의 평균과 표준편차를 계산하였다. 아래의 그래프에서 A는 전체 집단, B, C는 각 집단을 나타내며, 빨간 점은 평균, 오차 막대는 95% 신뢰구간을 나타낸다.


# long Format
p3.AsyPtt.Asc.conf.long.all <- p3 %>% filter(cSrc != "List_3", Resp != "New", aCorr==1) %>% group_by(SN, Btw, cSrc, Resp) %>% 
  summarise(aConf = mean(aConf)) %>% ungroup()
p3.AsyPtt.Asc.conf.wide.all <- p3.AsyPtt.Asc.conf.long.all %>% spread(key = Resp, value = aConf)
p3.AsyPtt.Asc.conf.long.all <- gather(p3.AsyPtt.Asc.conf.wide.all, Resp, aConf, Day_1:Day_2, factor_key=TRUE)
p3.AsyPtt.Asc.conf.long.all[is.na(p3.AsyPtt.Asc.conf.long.all)] <- 0 
p3.AsyPtt.Asc.conf.long.all <- arrange(p3.AsyPtt.Asc.conf.long.all, SN, cSrc, Resp, aConf)
p3.AsyPtt.Asc.conf.long.exp <- p3.AsyPtt.Asc.conf.long.all %>% filter(Btw==1)
p3.AsyPtt.Asc.conf.long.con <- p3.AsyPtt.Asc.conf.long.all %>% filter(Btw==2)

# wide format
p3.AsyPtt.Asc.conf.swide.all <- p3.AsyPtt.Asc.conf.long.all %>% spread(key = Resp, value = aConf)
p3.AsyPtt.Asc.conf.swide.exp <- p3.AsyPtt.Asc.conf.swide.all %>% filter(Btw==1)
p3.AsyPtt.Asc.conf.swide.con <- p3.AsyPtt.Asc.conf.swide.all %>% filter(Btw==2)


# summary
p3.AsyPtt.Asc.conf.g.all <- p3.AsyPtt.Asc.conf.long.all %>% group_by(Btw, cSrc, Resp) %>% 
  summarise(aConf.M = mean(aConf), aConf.SD = sd(aConf)) %>% ungroup()
p3.AsyPtt.Asc.conf.g.all$aConf.se <- Rmisc::summarySEwithin(data = p3.AsyPtt.Asc.conf.long.all, measurevar = "aConf", 
                                                       idvar = "SN", betweenvars = "Btw", withinvars = c("cSrc","Resp"))$se
p3.AsyPtt.Asc.conf.g.all$aConf.ci <- Rmisc::summarySEwithin(data = p3.AsyPtt.Asc.conf.long.all, measurevar = "aConf", 
                                                       idvar = "SN", betweenvars = "Btw", withinvars = c("cSrc","Resp"))$ci  
p3.AsyPtt.Asc.conf.g.exp <- p3.AsyPtt.Asc.conf.g.all %>% filter(Btw==1)
p3.AsyPtt.Asc.conf.g.con <- p3.AsyPtt.Asc.conf.g.all %>% filter(Btw==2)
p3.AsyPtt.Asc.conf.g.table.all <- p3.AsyPtt.Asc.conf.g.all %>% unite(cSrc_Resp, cSrc:Resp, remove=TRUE) %>% rename(sResp = "cSrc_Resp")
p3.AsyPtt.Asc.conf.g.table.all$sResp[p3.AsyPtt.Asc.conf.g.table.all$sResp=='List_1_Day_1'] <- 'List 1 Correct'
p3.AsyPtt.Asc.conf.g.table.all$sResp[p3.AsyPtt.Asc.conf.g.table.all$sResp=='List_2_Day_2'] <- 'List 2 Correct'
p3.AsyPtt.Asc.conf.g.table.all$sResp[p3.AsyPtt.Asc.conf.g.table.all$sResp=='List_1_Day_2'] <- 'Source Confusion'
p3.AsyPtt.Asc.conf.g.table.all$sResp[p3.AsyPtt.Asc.conf.g.table.all$sResp=='List_2_Day_1'] <- 'Intrusion'
p3.AsyPtt.Asc.conf.g.table.all %>% arrange(c(1,3,4,2,5,7,8,6)) %>% kable(digit=2)
Btw sResp aConf.M aConf.SD aConf.se aConf.ci
1 List 1 Correct 3.61 0.36 0.03 0.07
1 List 2 Correct 3.66 0.35 0.04 0.09
1 Source Confusion 3.54 0.42 0.06 0.14
1 Intrusion 3.62 0.36 0.04 0.08
2 List 1 Correct 3.58 0.31 0.03 0.07
2 List 2 Correct 3.64 0.29 0.04 0.08
2 Source Confusion 3.52 0.34 0.04 0.08
2 Intrusion 3.61 0.37 0.04 0.08
## plot
p3.Asc.conf.all.plot1 <- ggplot(data=p3.AsyPtt.Asc.conf.long.all, aes(x=Resp, y=aConf, fill=Btw)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .9, width = 0.8, colour="black", size = 1.02) +
  geom_pointrange(data=p3.AsyPtt.Asc.conf.g.all, aes(x = Resp, y = aConf.M, ymin = aConf.M-aConf.ci, ymax = aConf.M+aConf.ci),
                  position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
  facet_grid(.~cSrc, scales="free_x", 
             labeller = labeller(cSrc = c("List_1" = "List 1 (Day 1)","List_2" = "List 2 (Day 2)"))) +
  scale_x_discrete(labels=c("Day 1","Day 2")) +
  scale_fill_manual(values = c("#feb24c", "#91bfdb"),
                    labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Source Response by Object List", y = "AM Confidence Rating (1-4)", fill ="Group") +
  # ggtitle("Confidence Response") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        strip.text.x = element_text(face = "plain", size = 15, color = "black"),
        strip.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
        panel.spacing=unit(1, "lines"),
        plot.margin = margin(1, 0.3, 1, 0.3, "cm"), 
        # plot.title = element_text(hjust = 0.5),
        legend.position="top")
p3.Asc.conf.exp.plot1 <- ggplot(data=p3.AsyPtt.Asc.conf.long.exp, aes(x=cSrc, y=aConf, fill=Resp)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .7, width = .65, colour="black", size = 1.02) +
  geom_point(position=position_dodge(0.65), aes(x=cSrc, y=aConf, group=Resp, color = SN), size = 3, alpha = .4, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.Asc.conf.swide.exp,cSrc=="List_1"), inherit.aes = FALSE,
               aes(x=1-.16, y=filter(p3.AsyPtt.Asc.conf.swide.exp,cSrc=="List_1")$"Day_1",
                   xend=1+.16, yend=filter(p3.AsyPtt.Asc.conf.swide.exp,cSrc=="List_1")$"Day_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.Asc.conf.swide.exp,cSrc=="List_2"), inherit.aes = FALSE,
               aes(x=2-.16, y=filter(p3.AsyPtt.Asc.conf.swide.exp,cSrc=="List_2")$"Day_1",
                   xend=2+.16, yend=filter(p3.AsyPtt.Asc.conf.swide.exp,cSrc=="List_2")$"Day_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_pointrange(data=p3.AsyPtt.Asc.conf.g.exp, aes(x = cSrc, y = aConf.M, ymin = aConf.M-aConf.ci, ymax = aConf.M+aConf.ci),
                  position = position_dodge(0.65), color = "darkred", size = 1, show.legend = FALSE) +
  scale_fill_manual(values = c("#56b4e9", "#e69f00"),
                    labels = c("Day 1", "Day 2")) +
  scale_x_discrete(labels = c("List 1", "List 2")) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Object List", y = "AM Confidence Rating (1 - 4)", fill ="Attribution") +
  # ggtitle("List 1 AM Confidence of Correct SM (Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"), 
        legend.position="top")
p3.Asc.conf.con.plot1 <- ggplot(data=p3.AsyPtt.Asc.conf.long.con, aes(x=cSrc, y=aConf, fill=Resp)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .7, width = .65, colour="black", size = 1.02) +
  geom_point(position=position_dodge(0.65), aes(x=cSrc, y=aConf, group=Resp, color = SN), size = 3, alpha = .4, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.Asc.conf.swide.con,cSrc=="List_1"), inherit.aes = FALSE,
               aes(x=1-.16, y=filter(p3.AsyPtt.Asc.conf.swide.con,cSrc=="List_1")$"Day_1",
                   xend=1+.16, yend=filter(p3.AsyPtt.Asc.conf.swide.con,cSrc=="List_1")$"Day_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_segment(data=filter(p3.AsyPtt.Asc.conf.swide.con,cSrc=="List_2"), inherit.aes = FALSE,
               aes(x=2-.16, y=filter(p3.AsyPtt.Asc.conf.swide.con,cSrc=="List_2")$"Day_1",
                   xend=2+.16, yend=filter(p3.AsyPtt.Asc.conf.swide.con,cSrc=="List_2")$"Day_2", color=SN),
               size = 1, alpha = 0.3, show.legend = FALSE) +
  geom_pointrange(data=p3.AsyPtt.Asc.conf.g.con, aes(x = cSrc, y = aConf.M, ymin = aConf.M-aConf.ci, ymax = aConf.M+aConf.ci),
                  position = position_dodge(0.65), color = "darkred", size = 1, show.legend = FALSE) +
  scale_fill_manual(values = c("#56b4e9", "#e69f00"),
                    labels = c("Day 1", "Day 2")) +
  scale_x_discrete(labels = c("List 1", "List 2")) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Object List", y = "AM Confidence Rating (1 - 4)", fill ="Attribution") +
  # ggtitle("List 1 AM Confidence of Correct SM (Con)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"), 
        legend.position="top")

ggpubr::ggarrange(p3.Asc.conf.all.plot1, labels = "A) All Group",
  ggpubr::ggarrange(p3.Asc.conf.exp.plot1, p3.Asc.conf.con.plot1, ncol = 2, 
            labels = c("B) Experimental","C) Control"), hjust = -0.1, vjust=1, font.label = list(size = 16)
            ), nrow =2, hjust = -0.1, vjust=1, font.label = list(size = 16))


집단과 출처 반응을 요인으로 2 X 4 혼합 요인 분산분석을 수행하였다.

# List 1 & 2 Association Memory by Source Response
p3.AsyPtt.Asc.conf.long.all <- p3.AsyPtt.Asc.conf.long.all %>% unite(cSrc_Resp, cSrc:Resp, remove=TRUE) %>% rename(sResp = "cSrc_Resp")
p3.AsyPtt.Asc.conf.long.all$sResp[p3.AsyPtt.Asc.conf.long.all$sResp=='List_1_Day_1'] <- 'List 1 Correct'
p3.AsyPtt.Asc.conf.long.all$sResp[p3.AsyPtt.Asc.conf.long.all$sResp=='List_2_Day_2'] <- 'List 2 Correct'
p3.AsyPtt.Asc.conf.long.all$sResp[p3.AsyPtt.Asc.conf.long.all$sResp=='List_1_Day_2'] <- 'Source Confusion'
p3.AsyPtt.Asc.conf.long.all$sResp[p3.AsyPtt.Asc.conf.long.all$sResp=='List_2_Day_1'] <- 'Intrusion'
p3.AsyPtt.Asc.conf.long.allsResp <- factor(p3.AsyPtt.Asc.conf.long.all$sResp)

p3.AsyPtt.Asc.conf.all.1.aov <- aov_ez(id = "SN", dv = "aConf", data = p3.AsyPtt.Asc.conf.long.all, between = "Btw", within = "sResp")
anova(p3.AsyPtt.Asc.conf.all.1.aov, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 0.399 0.040 0.001 0.842
sResp 2.381 80.959 0.042 2.772 0.075 0.059
Btw:sResp 2.381 80.959 0.042 0.020 0.001 0.990

분석 결과, 모든 효과가 유의하지 않았다.


2.2.4.3 예측 오류 조건에따른 연합 기억 확신도


2.2.4.3.1 예측 오류에 따른 목록 1 연합 기억 확신도


목록 1에서 집단과 예측 오류 조건에 따라 연합 기억 확신도가 다른지 살펴보았다. 각 조건의 평균과 표준편차를 계산하였다. 아래의 그래프에서 A는 전체 집단, B는 실험 집단, C는 통제 집단을 나타내며, 빨간 점은 평균, 빨간 리본은 95% 신뢰구간을 나타낸다.

## List 1 Association Memory Confidence
# long format
p3.Acc.Asc.conf.long.all.1 <- p3 %>% filter(cPE != "pe0", cSrc == "List_1", aCorr == 1) %>% group_by(SN, Btw, cPE) %>% 
  summarise(aConf = mean(aConf)) %>% ungroup()
p3.Acc.Asc.conf.long.exp.1 <- p3.Acc.Asc.conf.long.all.1 %>% filter(Btw==1)
p3.Acc.Asc.conf.long.con.1 <- p3.Acc.Asc.conf.long.all.1 %>% filter(Btw==2)

# wide format
p3.Acc.Asc.conf.swide.all.1 <- p3.Acc.Asc.conf.long.all.1 %>% spread(key = cPE, value = aConf)
p3.Acc.Asc.conf.swide.exp.1 <- p3.Acc.Asc.conf.swide.all.1 %>% filter(Btw==1)
p3.Acc.Asc.conf.swide.con.1 <- p3.Acc.Asc.conf.swide.all.1 %>% filter(Btw==2)

# summary
p3.Acc.Asc.conf.g.all.1 <- p3.Acc.Asc.conf.long.all.1 %>%  group_by(Btw, cPE) %>% 
  summarise(aConf.M = mean(aConf), aConf.SD = sd(aConf)) %>% ungroup() 
p3.Acc.Asc.conf.g.all.1$aConf.se <- Rmisc::summarySEwithin(data = p3.Acc.Asc.conf.long.all.1, measurevar = "aConf", 
                                                           idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$se
p3.Acc.Asc.conf.g.all.1$aConf.ci <- Rmisc::summarySEwithin(data = p3.Acc.Asc.conf.long.all.1, measurevar = "aConf", 
                                                           idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$ci
p3.Acc.Asc.conf.g.exp.1 <- p3.Acc.Asc.conf.g.all.1 %>% filter(Btw==1)
p3.Acc.Asc.conf.g.con.1 <- p3.Acc.Asc.conf.g.all.1 %>% filter(Btw==2)
p3.Acc.Asc.conf.g.all.1 %>% kable(digit=2)
Btw cPE aConf.M aConf.SD aConf.se aConf.ci
1 pe1 3.58 0.41 0.03 0.06
1 pe2 3.63 0.34 0.04 0.09
1 pe3 3.60 0.36 0.03 0.07
2 pe1 3.58 0.39 0.04 0.09
2 pe2 3.54 0.36 0.06 0.12
2 pe3 3.58 0.33 0.05 0.10
## plot
p3.Asc.conf.all.plot2.2.1 <- ggplot(p3.Acc.Asc.conf.g.all.1, mapping=aes(x=cPE, y=aConf.M, group=Btw)) + 
  geom_ribbon(aes(ymin=aConf.M-aConf.ci, ymax=aConf.M+aConf.ci, fill=Btw), alpha=0.3) + 
  geom_line(p3.Acc.Asc.conf.g.all.1, mapping = aes(x=cPE, y=aConf.M, color = Btw), size = 1, show.legend = FALSE) +
  geom_pointrange(aes(x = cPE, ymin=aConf.M, ymax=aConf.M, color=Btw), position = position_dodge(0), 
                  size = 0.8, show.legend = FALSE) +
  scale_fill_manual(values = c("#e69f00", "#56b4e9"), labels = c("Experimental", "Control")) +
  scale_color_manual(values = c("#e69f00", "#56b4e9")) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "AM Confidence Rating (1-4)", fill = "Group") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 Correct SM (L1>D1; Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"),
        legend.position = "top")
p3.Asc.conf.exp.plot2.2.1 <- ggplot(p3.Acc.Asc.conf.g.exp.1, mapping=aes(x=cPE, y=aConf.M, group=1)) + 
  geom_ribbon(aes(ymin=aConf.M-aConf.ci, ymax=aConf.M+aConf.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=aConf.M, ymax=aConf.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.Asc.conf.long.exp.1, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=aConf, group=SN, color=SN)) +
  geom_point(p3.Acc.Asc.conf.long.exp.1, mapping = aes(x=cPE, y=aConf, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "AM Confidence Rating (1-4)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 AM of Correct Source (Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
p3.Asc.conf.con.plot2.2.1 <- ggplot(p3.Acc.Asc.conf.g.con.1, mapping=aes(x=cPE, y=aConf.M, group=1)) + 
  geom_ribbon(aes(ymin=aConf.M-aConf.ci, ymax=aConf.M+aConf.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=aConf.M, ymax=aConf.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.Asc.conf.long.con.1, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=aConf, group=SN, color=SN)) +
  geom_point(p3.Acc.Asc.conf.long.con.1, mapping = aes(x=cPE, y=aConf, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "AM Confidence Rating (1-4)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 AM of Correct Source (Con)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
ggpubr::ggarrange(p3.Asc.conf.all.plot2.2.1, p3.Asc.conf.exp.plot2.2.1, p3.Asc.conf.con.plot2.2.1, ncol=3, 
          labels=c("A) All Group", "B) Experimental", "C) Control"),
          hjust = -0.1, vjust=1, font.label = list(size = 16))


집단과 예측 오류 조건을 요인으로 2 X 3 혼합 요인 분산 분석을 수행하였다.

p3.Acc.all.aov.Asc.conf.1 <- aov_ez(id = "SN", dv = "aConf", data = p3.Acc.Asc.conf.long.all.1, between = "Btw", within = "cPE")
anova(p3.Acc.all.aov.Asc.conf.1, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 0.324 0.095 0.003 0.760
cPE 1.726 58.697 0.044 0.008 0.000 0.985
Btw:cPE 1.726 58.697 0.044 0.642 0.019 0.508

모든 효과가 유의하지 않았다.


2.2.4.3.2 예측 오류에 따른 목록 2 연합 기억 확신도


목록 2에서 집단과 예측 오류 조건에 따라 연합 기억 확신도가 다른지 살펴보았다. 각 조건의 평균과 표준편차를 계산하였다. 아래의 그래프에서 A는 전체 집단, B는 실험 집단, C는 통제 집단을 나타내며, 빨간 점은 평균, 빨간 리본은 95% 신뢰구간을 나타낸다.

## List 2 Association Memory Confidence
# long format
p3.Acc.Asc.conf.long.all.2 <- p3 %>% filter(cPE != "pe0", cSrc == "List_2", aCorr == 1) %>% group_by(SN, Btw, cPE) %>% 
  summarise(aConf = mean(aConf)) %>% ungroup()
p3.Acc.Asc.conf.long.exp.2 <- p3.Acc.Asc.conf.long.all.2 %>% filter(Btw==1)
p3.Acc.Asc.conf.long.con.2 <- p3.Acc.Asc.conf.long.all.2 %>% filter(Btw==2)

# wide format
p3.Acc.Asc.conf.swide.all.2 <- p3.Acc.Asc.conf.long.all.2 %>% spread(key = cPE, value = aConf)
p3.Acc.Asc.conf.swide.exp.2 <- p3.Acc.Asc.conf.swide.all.2 %>% filter(Btw==1)
p3.Acc.Asc.conf.swide.con.2 <- p3.Acc.Asc.conf.swide.all.2 %>% filter(Btw==2)

# summary
p3.Acc.Asc.conf.g.all.2 <- p3.Acc.Asc.conf.long.all.2 %>%  group_by(Btw, cPE) %>% 
  summarise(aConf.M = mean(aConf), aConf.SD = sd(aConf)) %>% ungroup() 
p3.Acc.Asc.conf.g.all.2$aConf.se <- Rmisc::summarySEwithin(data = p3.Acc.Asc.conf.long.all.2, measurevar = "aConf", 
                                                           idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$se
p3.Acc.Asc.conf.g.all.2$aConf.ci <- Rmisc::summarySEwithin(data = p3.Acc.Asc.conf.long.all.2, measurevar = "aConf", 
                                                           idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$ci
p3.Acc.Asc.conf.g.exp.2 <- p3.Acc.Asc.conf.g.all.2 %>% filter(Btw==1)
p3.Acc.Asc.conf.g.con.2 <- p3.Acc.Asc.conf.g.all.2 %>% filter(Btw==2)
p3.Acc.Asc.conf.g.all.2 %>% kable(digit=2)
Btw cPE aConf.M aConf.SD aConf.se aConf.ci
1 pe1 3.62 0.37 0.02 0.05
1 pe2 3.64 0.40 0.03 0.06
1 pe3 3.67 0.31 0.03 0.06
2 pe1 3.61 0.38 0.03 0.07
2 pe2 3.64 0.28 0.03 0.06
2 pe3 3.65 0.33 0.03 0.06
## plot
p3.Asc.conf.all.plot2.2.2 <- ggplot(p3.Acc.Asc.conf.g.all.2, mapping=aes(x=cPE, y=aConf.M, group=Btw)) + 
  geom_ribbon(aes(ymin=aConf.M-aConf.ci, ymax=aConf.M+aConf.ci, fill=Btw), alpha=0.3) + 
  geom_line(p3.Acc.Asc.conf.g.all.2, mapping = aes(x=cPE, y=aConf.M, color = Btw), size = 1, show.legend = FALSE) +
  geom_pointrange(aes(x = cPE, ymin=aConf.M, ymax=aConf.M, color=Btw), position = position_dodge(0), 
                  size = 0.8, show.legend = FALSE) +
  scale_fill_manual(values = c("#e69f00", "#56b4e9"), labels = c("Experimental", "Control")) +
  scale_color_manual(values = c("#e69f00", "#56b4e9")) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "AM Confidence Rating (1-4)", fill = "Group") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 Correct SM (L1>D1; Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"),
        legend.position = "top")
p3.Asc.conf.exp.plot2.2.2 <- ggplot(p3.Acc.Asc.conf.g.exp.2, mapping=aes(x=cPE, y=aConf.M, group=1)) + 
  geom_ribbon(aes(ymin=aConf.M-aConf.ci, ymax=aConf.M+aConf.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=aConf.M, ymax=aConf.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.Asc.conf.long.exp.2, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=aConf, group=SN, color=SN)) +
  geom_point(p3.Acc.Asc.conf.long.exp.2, mapping = aes(x=cPE, y=aConf, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "AM Confidence Rating (1-4)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 AM of Correct Source (Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
p3.Asc.conf.con.plot2.2.2 <- ggplot(p3.Acc.Asc.conf.g.con.2, mapping=aes(x=cPE, y=aConf.M, group=1)) + 
  geom_ribbon(aes(ymin=aConf.M-aConf.ci, ymax=aConf.M+aConf.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=aConf.M, ymax=aConf.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.Asc.conf.long.con.2, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=aConf, group=SN, color=SN)) +
  geom_point(p3.Acc.Asc.conf.long.con.2, mapping = aes(x=cPE, y=aConf, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "AM Confidence Rating (1-4)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 AM of Correct Source (Con)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
ggpubr::ggarrange(p3.Asc.conf.all.plot2.2.2, p3.Asc.conf.exp.plot2.2.2, p3.Asc.conf.con.plot2.2.2, ncol=3, 
          labels=c("A) All Group", "B) Experimental", "C) Control"),
          hjust = -0.1, vjust=1, font.label = list(size = 16))


집단과 예측 오류 조건을 요인으로 2 X 3 혼합 요인 분산 분석을 수행하였다.

p3.Acc.all.aov.Asc.conf.2 <- aov_ez(id = "SN", dv = "aConf", data = p3.Acc.Asc.conf.long.all.2, between = "Btw", within = "cPE")
anova(p3.Acc.all.aov.Asc.conf.2, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 0.329 0.021 0.001 0.885
cPE 1.992 67.716 0.017 0.993 0.028 0.375
Btw:cPE 1.992 67.716 0.017 0.040 0.001 0.960

모든 효과가 유의하지 않았다.


2.2.4.3.3 출처 반응에 따른 연합 기억 확신도


집단, 예측 오류 조건에 따른 연합 기억 확신도가 출처 반응의 유형에 따라 다른지 살펴보기 위한 분석을 수행하였다. 각 출처 반응을 예측 오류 조건으로 구분하였을 때 시행수가 충분하지 않은 경우에는 연합 기억 정확도의 평균이 대표성을 가지지 못할 수 있다. 따라서 각 출처 반응에서의 시행수를 확인하였다.

# The number of trials per condition
p3 %>% filter(cSrc!="List_3", Resp!="New", aCorr==1) %>% 
  group_by(SN, cSrc, Resp, cPE) %>% 
  summarise(NumTrial = length(aCorr)) %>% 
  ungroup %>% 
  group_by(cSrc, Resp, cPE) %>%
  summarise(Avg = mean(NumTrial), 
            Med = median(NumTrial), 
            Min = min(NumTrial), 
            Max = max(NumTrial)) %>% 
  ungroup %>% kable(digit=4)
cSrc Resp cPE Avg Med Min Max
List_1 Day_1 pe1 18.4444 18.0 9 29
List_1 Day_1 pe2 19.8333 20.0 8 26
List_1 Day_1 pe3 19.5833 19.5 12 28
List_1 Day_2 pe1 6.4857 7.0 1 16
List_1 Day_2 pe2 5.2000 5.0 1 14
List_1 Day_2 pe3 4.9444 4.5 1 11
List_2 Day_1 pe1 6.5556 6.0 1 15
List_2 Day_1 pe2 7.6944 8.0 2 17
List_2 Day_1 pe3 7.9167 7.5 1 16
List_2 Day_2 pe1 19.3889 19.5 10 28
List_2 Day_2 pe2 17.9722 17.5 11 27
List_2 Day_2 pe3 18.0556 18.0 6 28

각 출처 반응의 시행수에서 Source Confusion (L1>D2), Intrusion (L2>D1)은 평균 시행수가 10시행에 미치지 못하므로 분석에서 제외하였다. 따라서 출처 반응의 종속 변인 중 List 1 Correct (L1>D1), List 2 Correct (L2>D2)에서 집단과 예측 오류 조건에 따른 차이를 비교하였다.


2.2.4.3.3.1 목록 1 정확반응의 연합 기억 확신도

List 1 Correct (L1>D1) 출처 반응에서 집단과 예측 오류 조건에 따라 연합 기억 확신도 수준이 다른지 살펴보았다. 각 조건의 평균과 표준편차를 계산하였다. 아래의 그래프에서 A는 전체 집단, B는 실험 집단, C는 통제 집단을 나타내며, 빨간 점은 평균, 빨간 리본은 95% 신뢰구간을 나타낸다.

## List 1 AM Confidence of Correct Source Response
# long format
p3.Acc.Asc.conf.long.all.1.1 <- p3 %>% filter(cSrc == "List_1", cPE != "pe0", Correct == 1, aCorr == 1) %>% 
  group_by(SN, Btw, cPE) %>% 
  summarise(aConf = mean(aConf)) %>% ungroup()
p3.Acc.Asc.conf.long.exp.1.1<- p3.Acc.Asc.conf.long.all.1.1 %>% filter(Btw==1)
p3.Acc.Asc.conf.long.con.1.1 <- p3.Acc.Asc.conf.long.all.1.1 %>% filter(Btw==2)

# wide format
p3.Acc.Asc.conf.swide.all.1.1 <- p3.Acc.Asc.conf.long.all.1.1 %>% spread(key = cPE, value = aConf)
p3.Acc.Asc.conf.swide.exp.1.1 <- p3.Acc.Asc.conf.swide.all.1.1 %>% filter(Btw==1)
p3.Acc.Asc.conf.swide.con.1.1 <- p3.Acc.Asc.conf.swide.all.1.1 %>% filter(Btw==2)

# summary
p3.Acc.Asc.conf.g.all.1.1 <- p3.Acc.Asc.conf.long.all.1.1 %>%  group_by(Btw, cPE) %>% 
  summarise(aConf.M = mean(aConf), aConf.SD = sd(aConf)) %>% ungroup() 
p3.Acc.Asc.conf.g.all.1.1$aConf.se <- Rmisc::summarySEwithin(data = p3.Acc.Asc.conf.long.all.1.1, measurevar = "aConf", 
                                                           idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$se
p3.Acc.Asc.conf.g.all.1.1$aConf.ci <- Rmisc::summarySEwithin(data = p3.Acc.Asc.conf.long.all.1.1, measurevar = "aConf", 
                                                           idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$ci
p3.Acc.Asc.conf.g.exp.1.1 <- p3.Acc.Asc.conf.g.all.1.1 %>% filter(Btw==1)
p3.Acc.Asc.conf.g.con.1.1 <- p3.Acc.Asc.conf.g.all.1.1 %>% filter(Btw==2)
p3.Acc.Asc.conf.g.all.1.1 %>% kable(digit=2)
Btw cPE aConf.M aConf.SD aConf.se aConf.ci
1 pe1 3.58 0.43 0.03 0.07
1 pe2 3.65 0.38 0.05 0.10
1 pe3 3.60 0.39 0.04 0.08
2 pe1 3.58 0.40 0.04 0.09
2 pe2 3.56 0.40 0.07 0.14
2 pe3 3.60 0.32 0.06 0.12
## plot
p3.Asc.conf.all.plot2.2.1.1 <- ggplot(p3.Acc.Asc.conf.g.all.1.1, mapping=aes(x=cPE, y=aConf.M, group=Btw)) + 
  geom_ribbon(aes(ymin=aConf.M-aConf.ci, ymax=aConf.M+aConf.ci, fill=Btw), alpha=0.3) + 
  geom_line(p3.Acc.Asc.conf.g.all.1.1, mapping = aes(x=cPE, y=aConf.M, color = Btw), size = 1, show.legend = FALSE) +
  geom_pointrange(aes(x = cPE, ymin=aConf.M, ymax=aConf.M, color=Btw), position = position_dodge(0), 
                  size = 0.8, show.legend = FALSE) +
  scale_fill_manual(values = c("#e69f00", "#56b4e9"), labels = c("Experimental", "Control")) +
  scale_color_manual(values = c("#e69f00", "#56b4e9")) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "AM Confidence Rating (1-4)", fill = "Group") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 Correct SM (L1>D1; Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"),
        legend.position = "top")

p3.Asc.conf.exp.plot2.2.1.1 <- ggplot(p3.Acc.Asc.conf.g.exp.1.1, mapping=aes(x=cPE, y=aConf.M, group=1)) + 
  geom_ribbon(aes(ymin=aConf.M-aConf.ci, ymax=aConf.M+aConf.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=aConf.M, ymax=aConf.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.Asc.conf.long.exp.1.1, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=aConf, group=SN, color=SN)) +
  geom_point(p3.Acc.Asc.conf.long.exp.1.1, mapping = aes(x=cPE, y=aConf, group=SN, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "Association Confidence (1 - 4)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 AM Confidence of Correct SM (Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
p3.Asc.conf.con.plot2.2.1.1 <- ggplot(p3.Acc.Asc.conf.g.con.1.1, mapping=aes(x=cPE, y=aConf.M, group=1)) + 
  geom_ribbon(aes(ymin=aConf.M-aConf.ci, ymax=aConf.M+aConf.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=aConf.M, ymax=aConf.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.Asc.conf.long.con.1.1, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=aConf, group=SN, color=SN)) +
  geom_point(p3.Acc.Asc.conf.long.con.1.1, mapping = aes(x=cPE, y=aConf, group=SN, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "Association Confidence (1 - 4)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 AM Confidence of Correct SM (Con)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
ggpubr::ggarrange(p3.Asc.conf.all.plot2.2.1.1, p3.Asc.conf.exp.plot2.2.1.1, p3.Asc.conf.con.plot2.2.1.1, ncol=3, 
          labels=c("A) All Group", "B) Experimental", "C) Control"),
          hjust = -0.1, vjust=1, font.label = list(size = 16))


집단과 예측 오류 조건을 요인으로 하는 2 X 3 혼합 요인 분산분석을 수행하였다.


p3.Acc.Asc.all.aov.conf.1.1 <- aov_ez(id = "SN", dv = "aConf", data = p3.Acc.Asc.conf.long.all.1.1, between = "Btw", within = "cPE")
anova(p3.Acc.Asc.all.aov.conf.1.1, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 0.352 0.065 0.002 0.800
cPE 1.659 56.403 0.058 0.125 0.004 0.845
Btw:cPE 1.659 56.403 0.058 0.618 0.018 0.514

분석 결과, 모든 효과가 유의하지 않았다.


2.2.4.3.3.2 목록 2 정확반응의 연합 기억 확신도

List 2 Correct (L1>D1) 출처 반응에서 집단과 예측 오류 조건에 따라 연합 기억 확신도 수준이 다른지 살펴보았다. 각 조건의 평균과 표준편차를 계산하였다. 아래의 그래프에서 A는 전체 집단, B는 실험 집단, C는 통제 집단을 나타내며, 빨간 점은 평균, 빨간 리본은 95% 신뢰구간을 나타낸다.

## List 2 AM Confidence of Correct Source Response
# long format
p3.Acc.Asc.conf.long.all.2.1 <- p3 %>% filter(cSrc == "List_2", cPE != "pe0", Correct == 1, aCorr == 1) %>% 
  group_by(SN, Btw, cPE) %>% 
  summarise(aConf = mean(aConf)) %>% ungroup()
p3.Acc.Asc.conf.long.exp.2.1<- p3.Acc.Asc.conf.long.all.2.1 %>% filter(Btw==1)
p3.Acc.Asc.conf.long.con.2.1 <- p3.Acc.Asc.conf.long.all.2.1 %>% filter(Btw==2)

# wide format
p3.Acc.Asc.conf.swide.all.2.1 <- p3.Acc.Asc.conf.long.all.2.1 %>% spread(key = cPE, value = aConf)
p3.Acc.Asc.conf.swide.exp.2.1 <- p3.Acc.Asc.conf.swide.all.2.1 %>% filter(Btw==1)
p3.Acc.Asc.conf.swide.con.2.1 <- p3.Acc.Asc.conf.swide.all.2.1 %>% filter(Btw==2)

# summary
p3.Acc.Asc.conf.g.all.2.1 <- p3.Acc.Asc.conf.long.all.2.1 %>%  group_by(Btw, cPE) %>% 
  summarise(aConf.M = mean(aConf), aConf.SD = sd(aConf)) %>% ungroup() 
p3.Acc.Asc.conf.g.all.2.1$aConf.se <- Rmisc::summarySEwithin(data = p3.Acc.Asc.conf.long.all.2.1, measurevar = "aConf", 
                                                             idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$se
p3.Acc.Asc.conf.g.all.2.1$aConf.ci <- Rmisc::summarySEwithin(data = p3.Acc.Asc.conf.long.all.2.1, measurevar = "aConf", 
                                                             idvar = "SN", betweenvars = "Btw", withinvars = "cPE")$ci
p3.Acc.Asc.conf.g.exp.2.1 <- p3.Acc.Asc.conf.g.all.2.1 %>% filter(Btw==1)
p3.Acc.Asc.conf.g.con.2.1 <- p3.Acc.Asc.conf.g.all.2.1 %>% filter(Btw==2)
p3.Acc.Asc.conf.g.all.2.1 %>% kable(digit=2)
Btw cPE aConf.M aConf.SD aConf.se aConf.ci
1 pe1 3.65 0.37 0.03 0.06
1 pe2 3.64 0.44 0.04 0.08
1 pe3 3.71 0.29 0.04 0.09
2 pe1 3.60 0.37 0.03 0.07
2 pe2 3.67 0.26 0.03 0.07
2 pe3 3.66 0.31 0.04 0.08
## plot
p3.Asc.conf.all.plot2.2.2.1 <- ggplot(p3.Acc.Asc.conf.g.all.2.1, mapping=aes(x=cPE, y=aConf.M, group=Btw)) + 
  geom_ribbon(aes(ymin=aConf.M-aConf.ci, ymax=aConf.M+aConf.ci, fill=Btw), alpha=0.3) + 
  geom_line(p3.Acc.Asc.conf.g.all.2.1, mapping = aes(x=cPE, y=aConf.M, color = Btw), size = 1, show.legend = FALSE) +
  geom_pointrange(aes(x = cPE, ymin=aConf.M, ymax=aConf.M, color=Btw), position = position_dodge(0), 
                  size = 0.8, show.legend = FALSE) +
  scale_fill_manual(values = c("#e69f00", "#56b4e9"), labels = c("Experimental", "Control")) +
  scale_color_manual(values = c("#e69f00", "#56b4e9")) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "AM Confidence Rating (1-4)", fill = "Group") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 Correct SM (L1>D1; Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"),
        legend.position = "top")

p3.Asc.conf.exp.plot2.2.2.1 <- ggplot(p3.Acc.Asc.conf.g.exp.2.1, mapping=aes(x=cPE, y=aConf.M, group=1)) + 
  geom_ribbon(aes(ymin=aConf.M-aConf.ci, ymax=aConf.M+aConf.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=aConf.M, ymax=aConf.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.Asc.conf.long.exp.2.1, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=aConf, group=SN, color=SN)) +
  geom_point(p3.Acc.Asc.conf.long.exp.2.1, mapping = aes(x=cPE, y=aConf, group=SN, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "Association Confidence (1 - 4)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 AM Confidence of Correct SM (Exp)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
p3.Asc.conf.con.plot2.2.2.1 <- ggplot(p3.Acc.Asc.conf.g.con.2.1, mapping=aes(x=cPE, y=aConf.M, group=1)) + 
  geom_ribbon(aes(ymin=aConf.M-aConf.ci, ymax=aConf.M+aConf.ci), fill="darkred", alpha=0.3) + geom_line(colour="darkred", size = 1) +
  geom_pointrange(aes(x = cPE, ymin=aConf.M, ymax=aConf.M), position = position_dodge(0.65), 
                  color = "darkred", size = 0.8, show.legend = FALSE) +
  geom_line(p3.Acc.Asc.conf.long.con.2.1, alpha = 0.7, show.legend = FALSE,
            mapping=aes(x=cPE, y=aConf, group=SN, color=SN)) +
  geom_point(p3.Acc.Asc.conf.long.con.2.1, mapping = aes(x=cPE, y=aConf, group=SN, color=SN), size = 3, alpha = .22, show.legend = FALSE) +
  coord_cartesian(ylim = c(1, 4), clip = "on") +
  labs(x = "Prediction Error", y = "Association Confidence (1 - 4)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # ggtitle("List 1 AM Confidence of Correct SM (Con)") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(2, 0.3, 0.3, 0.3, "cm"))
ggpubr::ggarrange(p3.Asc.conf.all.plot2.2.2.1, p3.Asc.conf.exp.plot2.2.2.1, p3.Asc.conf.con.plot2.2.2.1, ncol=3, 
          labels=c("A) All Group", "B) Experimental", "C) Control"),
          hjust = -0.1, vjust=1, font.label = list(size = 16))


집단과 예측 오류 조건을 요인으로 하는 2 X 3 혼합 요인 분산분석을 수행하였다.


p3.Acc.Asc.all.aov.conf.2.1 <- aov_ez(id = "SN", dv = "aConf", data = p3.Acc.Asc.conf.long.all.2.1, between = "Btw", within = "cPE")
anova(p3.Acc.Asc.all.aov.conf.2.1, es = "pes") %>% kable(digits = 3)
num Df den Df MSE F pes Pr(>F)
Btw 1.000 34.000 0.309 0.033 0.001 0.856
cPE 1.879 63.888 0.028 1.240 0.035 0.295
Btw:cPE 1.879 63.888 0.028 0.618 0.018 0.533

분석 결과, 모든 효과가 유의하지 않았다.



save(list=ls(), file="memudet_data.Rdata")


3 PLOT

3.1 Day 1 & 2. Association Memory Performance

p12.L.g.L1 <- p12.L.g.all %>% filter(List == "List1")
p12.L.g.L1$Btw <- factor(p12.L.g.L1$Btw, labels=c("Experimental", "Control"))
p12.L.g.L1.plot1 <- ggplot(data=p12.L.g.L1, 
                           aes(x=Block, y=ACC.M, ymin=ACC.M-ci, ymax=ACC.M+ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(20,100), clip = "on") +
  # scale_y_continuous(breaks = seq(0,80)) +
  scale_x_discrete(labels = c("1", "2", "3", "4")) +
  labs(x = "Block", y = "Accuracy (%)") +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.65, 0.35),
        legend.title = element_blank(),
        aspect.ratio = 0.6,
        legend.background = element_blank(),
        plot.margin = margin(1, 1, 0.3, 1, "cm"),
        legend.key = element_blank())

p12.L.g.L2 <- p12.L.g.all %>% filter(List == "List2")
p12.L.g.L2$Btw <- factor(p12.L.g.L2$Btw, labels=c("Experimental", "Control"))
p12.L.g.L2.plot1 <- ggplot(data=p12.L.g.L2, 
                           aes(x=Block, y=ACC.M, ymin=ACC.M-ci, ymax=ACC.M+ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(20,100), clip = "on") +
  # scale_y_continuous(breaks = seq(0,80)) +
  scale_x_discrete(labels = c("1", "2", "3", "4")) +
  labs(x = "Block", y = "Accuracy (%)") +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.65, 0.35),
        legend.title = element_blank(),
        aspect.ratio = 0.6,
        legend.background = element_blank(),
        plot.margin = margin(1, 1, 0.3, 1, "cm"),
        legend.key = element_blank())


p12.L.rt.g.L1 <- p12.L.rt.g.all %>% filter(List == "List1")
p12.L.rt.g.L1$Btw <- factor(p12.L.g.L1$Btw, labels=c("Experimental", "Control"))
p12.L.rt.g.L1.plot1 <- ggplot(data=p12.L.rt.g.L1 , 
                              aes(x=Block, y=RT.M, ymin=RT.M-ci, ymax=RT.M+ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(0,1800), clip = "on") +
  # scale_y_continuous(breaks = seq(0,80)) +
  scale_x_discrete(labels = c("1", "2", "3", "4")) +
  labs(x = "Block", y = "Response Time (ms)") +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.65, 0.85),
        legend.title = element_blank(),
        aspect.ratio = 0.6,
        legend.background = element_blank(),
        plot.margin = margin(0.3, 1, 0.3, 1, "cm"),
        legend.key = element_blank())

p12.L.rt.g.L2 <- p12.L.rt.g.all %>% filter(List == "List2")
p12.L.rt.g.L2$Btw <- factor(p12.L.g.L2$Btw, labels=c("Experimental", "Control"))
p12.L.rt.g.L2.plot1 <- ggplot(data=p12.L.rt.g.L2 , 
                              aes(x=Block, y=RT.M, ymin=RT.M-ci, ymax=RT.M+ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(0,1800), clip = "on") +
  # scale_y_continuous(breaks = seq(0,80)) +
  scale_x_discrete(labels = c("1", "2", "3", "4")) +
  labs(x = "Block", y = "Response Time (ms)") +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.65, 0.85),
        legend.title = element_blank(),
        aspect.ratio = 0.6,
        legend.background = element_blank(),
        plot.margin = margin(0.3, 1, 0.3, 1, "cm"),
        legend.key = element_blank())

d1_d2_asc_all2_Main<- ggpubr::ggarrange(p12.L.g.L1.plot1, p12.L.g.L2.plot1, p12.L.rt.g.L1.plot1, p12.L.rt.g.L2.plot1, nrow = 2, ncol=2, 
                                 labels=c("A. List 1","B. List 2"," "," "),
                                 hjust = -0.05, vjust=1, font.label = list(size = 20))
d1_d2_asc_all2_Main

# ggsave("d1&d2_asc_all_Main.jpg", plot = d1_d2_asc_all2_Main, width=12, height=9, unit='in', dpi=600)


3.2 Day 3. Asymmetric Patterns of Source Misattribution

p3.AsyPtt.long.all.p2 <- p3.AsyPtt.long.all %>% filter(cSrc != "List_3", Resp != "New")
p3.AsyPtt.g.all.p2 <- p3.AsyPtt.g.all %>% filter(cSrc != "List_3", Resp != "New")
p3.all.plot3.pilot <- ggplot(data=p3.AsyPtt.long.all.p2, aes(x=cSrc, y=Rsp, fill=Resp)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .9, width = 0.8, colour="black", size = 1.02) +
  geom_pointrange(data=p3.AsyPtt.g.all.p2, aes(x = cSrc, y=Rsp.M, ymin = Rsp.M-Rsp.ci, ymax = Rsp.M+Rsp.ci),
                  position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
  # geom_point(data=p3.AsyPtt.g.all.p2, aes(x = cSrc, y=Rsp.M),
                  # position = position_dodge(0.80), color = "black", size = 5, show.legend = FALSE) +
  # geom_errorbar(data=p3.AsyPtt.g.all.p2, aes(x=cSrc, ymin = Rsp.M-Rsp.ci, ymax = Rsp.M+Rsp.ci), size = 1, width = .2, position = position_dodge(0.8)) +
  facet_grid(.~Btw, scales="free_x", space = "free",
             labeller = labeller(Btw = c("1" = "Experimental Group","2" = "Control Group"))) +
  scale_x_discrete(labels=c("List 1","List 2")) +
  scale_fill_manual(values = c("#feb24c", "#91bfdb"),
  # scale_fill_manual(values = c("#a3d8d7", "#ed9b5d"),#a3d8d7 #72c2c8
  # scale_fill_manual(values = c("#feb24c", "#4292c6"),
  # scale_fill_manual(values = c("#c6d9f1", "#254061"),
                    labels = c("Day 1 Response", "Day 2 Response")) +
  coord_cartesian(ylim = c(0, 105), clip = "on") +
  labs(x = "Source Response by Object List", y = "Proportion of Response (%)", fill ="Attribution") +
  # ggtitle("Source Memory Response") +
  theme_bw(base_size = 18) +
  theme(axis.line=element_line(),
        # axis.title = element_text(face = "bold", size = 16, color = "black"),
        # axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        # strip.text.x = element_text(face = "plain", size = 15, color = "black"),
        strip.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
        panel.spacing=unit(1, "lines"),
        plot.margin = margin(1, 0.3, 1, 0.3, "cm"), 
        # plot.title = element_text(hjust = 0.5),
        legend.position=c(0.8, 0.85),
        legend.title = element_text(size=18),
        legend.text = element_text(size=18))
p3.all.plot3.pilot

# ggsave("d3_Src_asyptt_all_pilot3.jpg", plot = p3.all.plot3.pilot, width=6, height=6, unit='in', dpi=600)
p3.conf.all.plot1 <- ggplot(data=p3.AsyPtt.conf.long.all, aes(x=cSrc, y=Conf, fill=Resp)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .9, width = 0.8, colour="black", size = 1.02) +
  geom_pointrange(data=p3.AsyPtt.conf.g.all, aes(x = cSrc, y = Conf.M, ymin = Conf.M-Conf.ci, ymax = Conf.M+Conf.ci),
                  position = position_dodge(0.80), color = "darkred", size = 1, show.legend = FALSE) +
  facet_grid(.~Btw, scales="free_x", 
             labeller = labeller(Btw = c("1" = "Experimental Group","2" = "Control Group"))) +
  scale_x_discrete(labels=c("List 1","List 2")) +
  scale_fill_manual(values = c("#feb24c", "#91bfdb"),
                    labels = c("Day 1 Response", "Day 2 Response")) +
  coord_cartesian(ylim = c(1, 4.5), clip = "on") +
  labs(x = "Source Response by Object List", y = "Confidence Rating (1-4)", fill ="Attribution") +
  # ggtitle("Confidence Response") +
  theme_bw(base_size = 18) +
  theme(axis.line=element_line(),
        # axis.title = element_text(face = "bold", size = 16, color = "black"),
        # axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        # strip.text.x = element_text(face = "plain", size = 15, color = "black"),
        strip.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
        panel.spacing=unit(1, "lines"),
        plot.margin = margin(1, 0.3, 1, 0.3, "cm"), 
        # plot.title = element_text(hjust = 0.5),
        legend.position=c(0.8,0.85),
        legend.title = element_text(size=18),
        legend.text = element_text(size=18))
p3.conf.all.plot1

# ggsave("d3_sConf_asyptt_all_main1.jpg", plot = p3.conf.all.plot1, width=6, height=6, unit='in', dpi=600)


3.3 Day 3. Non-monotonic Patterns of Memory Updating

# Intrusion
p3.Intru.g.all.p3 <- p3.Intru.g.all
p3.Intru.g.all.p3$Btw <- factor(p3.Intru.g.all.p3$Btw, labels=c("Experimental", "Control"))

p3.plot2.1.all.p3.main <- ggplot(data=p3.Intru.g.all.p3, 
                            aes(x=cPE, y=Intru.M, ymin=Intru.M-Intru.ci, ymax=Intru.M+Intru.ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(0,70), clip = "on") +
  # scale_y_continuous(breaks = seq(0,80)) +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  labs(x = "Prediction Error", y = "Intrusion (%)") +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.75, 0.85),
        legend.title = element_blank(),
        aspect.ratio = 1,
        legend.background = element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"),
        legend.key = element_blank())
p3.plot2.1.all.p3.main

# ggsave("d3_Src_nmon_int_main2.jpg", plot = p3.plot2.1.all.p3.main, width=6, height=6, unit='in', dpi=600)
p3.Acc.g.all.1.p3 <- p3.Acc.g.all.1
p3.Acc.g.all.1.p3$Btw <- factor(p3.Acc.g.all.1.p3$Btw, labels=c("Experimental", "Control"))
p3.plot2.2.all.1.p3 <- ggplot(data=p3.Acc.g.all.1.p3, 
                              aes(x=cPE, y=Acc.M, ymin=Acc.M-Acc.ci, ymax=Acc.M+Acc.ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(40,100), clip = "on") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # scale_y_continuous(breaks = seq(0,80)) +
  labs(x = "Prediction Error", y = "List 1 Correct (%)") +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.75, 0.25),
        legend.title = element_blank(),
        aspect.ratio = 1,
        legend.background = element_blank(),
        plot.margin = margin(1, 0.5, 0.3, 0.5, "cm"),
        legend.key = element_blank())
p3.plot2.2.all.1.p3

# source confusion
p3.Err.g.all.p3 <- p3.Err.g.all
p3.Err.g.all.p3$Btw <- factor(p3.Err.g.all.p3$Btw, labels=c("Experimental", "Control"))

p3.plot2.3.all.1.p3 <- ggplot(data=p3.Err.g.all.p3, 
                              aes(x=cPE, y=Err.M, ymin=Err.M-Err.ci, ymax=Err.M+Err.ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(0,70), clip = "on") +
  # scale_y_continuous(breaks = seq(0,80)) +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  labs(x = "Prediction Error", y = "Source Confusion (%)") +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.75, 0.85),
        legend.title = element_blank(),
        aspect.ratio = 1,
        legend.background = element_blank(),
        plot.margin = margin(1, 0.5, 0.3, 0.5, "cm"),
        legend.key = element_blank())
p3.plot2.3.all.1.p3

# List 2 Correct
p3.Acc.g.all.2.p3 <- p3.Acc.g.all.2
p3.Acc.g.all.2.p3$Btw <- factor(p3.Acc.g.all.2.p3$Btw, labels=c("Experimental", "Control"))

p3.plot2.2.all.2.p3 <- ggplot(data=p3.Acc.g.all.2.p3, 
                              aes(x=cPE, y=Acc.M, ymin=Acc.M-Acc.ci, ymax=Acc.M+Acc.ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(40,100), clip = "on") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  # scale_y_continuous(breaks = seq(0,80)) +
  labs(x = "Prediction Error", y = "List 2 Correct (%)") +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.75, 0.25),
        legend.title = element_blank(),
        aspect.ratio = 1,
        legend.background = element_blank(),
        plot.margin = margin(1, 0.5, 0.3, 0.5, "cm"),
        legend.key = element_blank())
# p3.plot2.2.all.2.p3

# Intrusion
p3.Intru.g.all.p3 <- p3.Intru.g.all
p3.Intru.g.all.p3$Btw <- factor(p3.Intru.g.all.p3$Btw, labels=c("Experimental", "Control"))

p3.plot2.1.all.p3 <- ggplot(data=p3.Intru.g.all.p3, 
                            aes(x=cPE, y=Intru.M, ymin=Intru.M-Intru.ci, ymax=Intru.M+Intru.ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(0,70), clip = "on") +
  # scale_y_continuous(breaks = seq(0,80)) +
  labs(x = "Prediction Error", y = "Intrusion (%)") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.75, 0.85),
        legend.title = element_blank(),
        aspect.ratio = 1,
        legend.background = element_blank(),
        plot.margin = margin(1, 0.5, 0.3, 0.5, "cm"),
        legend.key = element_blank())
# p3.plot2.1.all.p3

d3_nmon_src<- ggpubr::ggarrange(p3.plot2.2.all.1.p3, p3.plot2.2.all.2.p3, p3.plot2.3.all.1.p3, p3.plot2.1.all.p3, nrow = 2, ncol=2, 
                          labels=c("A","B","C","D"),
                          hjust = -0.05, vjust=1, font.label = list(size = 20))
d3_nmon_src

# ggsave("d3_Src_nmon_all_main3.jpg", plot = d3_nmon_src, width=12, height=12, unit='in', dpi=600)
p3.US.g.all.p3 <- p3.US.g.all
p3.US.g.all.p3$Btw <- factor(p3.US.g.all.p3$Btw, labels=c("Experimental", "Control"))

p3.plot5.1.all.p3 <- ggplot(data=p3.US.g.all.p3, 
                            aes(x=cPE, y=US.M, ymin=US.M-US.ci, ymax=US.M+US.ci, color=Btw, shape=Btw)) +
  geom_point(size = 4, position = position_dodge(.3)) +
  geom_errorbar(width = .2, position = position_dodge(.3)) +
  geom_line(aes(group = Btw), position = position_dodge(.3)) + 
  scale_color_manual(values = c("red", "black")) +
  # scale_shape_manual(values = c("red", "black"), labels = c("Experimental", "Control")) +
  coord_cartesian(ylim = c(-50,50), clip = "on") +
  # scale_y_continuous(breaks = seq(0,80)) +
  labs(x = "Prediction Error", y = "Updating Score") +
  scale_x_discrete(labels = c("PE 1", "PE 2", "PE 3")) +
  theme_bw(base_size = 18) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(0.75, 0.20),
        legend.title = element_blank(),
        aspect.ratio = 1,
        legend.background = element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"),
        legend.key = element_blank())
p3.plot5.1.all.p3

# ggsave("d3_Src_nmon_US_main3.jpg", plot = p3.plot5.1.all.p3, width=6, height=6, unit='in', dpi=600)

3.4 Day 3. Association Memory Performance

p3.day.Asc.all.plot.2 <- ggplot(data=p3.day.Asc.long.all, aes(x=cSrc, y=aCorr, fill=Btw)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .7, width = .65, colour="black", size = 1.02) +
  # geom_point(position=position_dodge(0.65), aes(x=cSrc, y=aCorr, group=Btw, color=SN), size = 3, alpha = .4, show.legend = FALSE) +
  geom_pointrange(data=p3.day.Asc.g.all, aes(x = cSrc, y = aCorr.M, ymin = aCorr.M-aCorr.ci, ymax = aCorr.M+aCorr.ci),
                  position = position_dodge(0.65), color = "black", size = 1,  show.legend = FALSE) +
    scale_fill_manual(values = c("#c6d9f1", "#254061"),
  # scale_fill_manual(values = c("#feb24c", "#91bfdb"),
                    labels = c("Experimental", "Control")) +
  scale_x_discrete(labels = c("List 1", "List 2")) +
  coord_cartesian(ylim = c(40, 105), clip = "on") +
  labs(x = "Object List", y = "Accuracy (%)", fill ="Group") +
  # ggtitle("Association Memory by Object List") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"), 
        legend.position=c(0.80,0.90))
p3.day.Asc.all.plot.2

# ggsave("d3_asc_all.jpg", plot = p3.day.Asc.all.plot.2, width=6, height=6, unit='in', dpi=600)
p3.day.Asc.conf.all.plot.2 <- ggplot(data=p3.day.Asc.conf.long.all, aes(x=cSrc, y=aConf, fill=Btw)) +
  stat_summary(fun = mean, geom = "bar", position="dodge", na.rm = TRUE, alpha = .7, width = .65, colour="black", size = 1.02) +
  # geom_point(position=position_dodge(0.65), aes(x=cSrc, y=aConf, group=Btw, color=SN), size = 3, alpha = .4, show.legend = FALSE) +
  geom_pointrange(data=p3.day.Asc.conf.g.all, aes(x = cSrc, y = aConf.M, ymin = aConf.M-aConf.ci, ymax = aConf.M+aConf.ci),
                  position = position_dodge(0.65), color = "black", size = 1, show.legend = FALSE) +
  scale_fill_manual(values = c("#c6d9f1", "#254061"),
  # scale_fill_manual(values = c("#feb24c", "#91bfdb"),
                    labels = c("Experimental", "Control")) +
  scale_x_discrete(labels = c("List 1", "List 2")) +
  coord_cartesian(ylim = c(1, 4.5), clip = "on") +
  labs(x = "Object List", y = "Confidence Rating (1-4)", fill ="Group") +
  # ggtitle("Association Memory by Object List") +
  theme_bw(base_size = 15) +
  theme(axis.title = element_text(face = "bold", size = 16, color = "black"),
        axis.text = element_text(face = "plain", hjust = 0.5, size = 15, color = "black"),
        axis.line=element_line(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border=element_blank(),
        plot.margin = margin(1, 0.3, 0.3, 0.3, "cm"), 
        legend.position=c(.8,.9))
p3.day.Asc.conf.all.plot.2

# ggsave("d3_asc_conf_all.jpg", plot = p3.day.Asc.conf.all.plot.2, width=6, height=6, unit='in', dpi=600)



4 SessionInfo

sessionInfo()
## R version 4.1.1 (2021-08-10)
## Platform: aarch64-apple-darwin20 (64-bit)
## Running under: macOS Monterey 12.1
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.1-arm64/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.1-arm64/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
## [1] parallel  stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] klippy_0.0.0.9500    patchwork_1.1.0.9000 ggpubr_0.4.0        
##  [4] psycho_0.6.1         nortest_1.0-4        rcompanion_2.4.13   
##  [7] matlab_1.0.2         scales_1.1.1         apaTables_2.0.8     
## [10] RVAideMemoire_0.9-81 ggbeeswarm_0.6.0     MuMIn_1.43.17       
## [13] gridExtra_2.3        psych_2.1.9          ordinal_2019.12-10  
## [16] emmeans_1.6.3        afex_1.0-1           lme4_1.1-27.1       
## [19] Matrix_1.3-4         car_3.0-11           carData_3.0-4       
## [22] knitr_1.34           papaja_0.1.0.9997    forcats_0.5.1       
## [25] stringr_1.4.0        dplyr_1.0.7          purrr_0.3.4         
## [28] readr_2.0.1          tidyr_1.1.3          tibble_3.1.4        
## [31] ggplot2_3.3.5        tidyverse_1.3.1      Rmisc_1.5           
## [34] plyr_1.8.6           lattice_0.20-44      pacman_0.5.1        
## 
## loaded via a namespace (and not attached):
##   [1] readxl_1.3.1        backports_1.2.1     splines_4.1.1      
##   [4] usethis_2.0.1       TH.data_1.1-0       digest_0.6.28      
##   [7] htmltools_0.5.2     lmerTest_3.1-3      fansi_0.5.0        
##  [10] magrittr_2.0.1      memoise_2.0.0       remotes_2.4.0      
##  [13] tzdb_0.1.2          openxlsx_4.2.4      modelr_0.1.8       
##  [16] matrixStats_0.61.0  sandwich_3.0-1      prettyunits_1.1.1  
##  [19] colorspace_2.0-2    rvest_1.0.1         haven_2.4.3        
##  [22] xfun_0.26           callr_3.7.0         crayon_1.4.1       
##  [25] jsonlite_1.7.2      libcoin_1.0-9       Exact_3.1          
##  [28] survival_3.2-11     zoo_1.8-9           glue_1.4.2         
##  [31] gtable_0.3.0        pkgbuild_1.2.0      abind_1.4-5        
##  [34] mvtnorm_1.1-2       DBI_1.1.1           rstatix_0.7.0      
##  [37] Rcpp_1.0.7          xtable_1.8-4        tmvnsim_1.0-2      
##  [40] foreign_0.8-81      proxy_0.4-26        stats4_4.1.1       
##  [43] httr_1.4.2          ellipsis_0.3.2      modeltools_0.2-23  
##  [46] farver_2.1.0        pkgconfig_2.0.3     multcompView_0.1-8 
##  [49] dbplyr_2.1.1        utf8_1.2.2          labeling_0.4.2     
##  [52] tidyselect_1.1.1    rlang_0.4.11        reshape2_1.4.4     
##  [55] cachem_1.0.6        munsell_0.5.0       cellranger_1.1.0   
##  [58] tools_4.1.1         cli_3.0.1           generics_0.1.0     
##  [61] devtools_2.4.2      broom_0.7.9.9000    evaluate_0.14      
##  [64] fastmap_1.1.0       yaml_2.2.1          processx_3.5.2     
##  [67] fs_1.5.0            zip_2.2.0           coin_1.4-2         
##  [70] rootSolve_1.8.2.3   nlme_3.1-152        xml2_1.3.2         
##  [73] pbkrtest_0.5.1      compiler_4.1.1      rstudioapi_0.13    
##  [76] beeswarm_0.4.0      curl_4.3.2          testthat_3.0.4     
##  [79] e1071_1.7-9         ggsignif_0.6.3      reprex_2.0.1       
##  [82] DescTools_0.99.44   stringi_1.7.4       highr_0.9          
##  [85] ps_1.6.0            desc_1.3.0          nloptr_1.2.2.2     
##  [88] vctrs_0.3.8         pillar_1.6.2        lifecycle_1.0.0    
##  [91] lmtest_0.9-39       jquerylib_0.1.4     ucminf_1.1-4       
##  [94] estimability_1.3    data.table_1.14.0   cowplot_1.1.1      
##  [97] lmom_2.8            R6_2.5.1            rio_0.5.27         
## [100] vipor_0.4.5         gld_2.6.4           sessioninfo_1.1.1  
## [103] codetools_0.2-18    pkgload_1.2.2       boot_1.3-28        
## [106] MASS_7.3-54         assertthat_0.2.1    rprojroot_2.0.2    
## [109] withr_2.4.2         mnormt_2.0.2        multcomp_1.4-18    
## [112] expm_0.999-6        hms_1.1.0           grid_4.1.1         
## [115] coda_0.19-4         class_7.3-19        minqa_1.2.4        
## [118] rmarkdown_2.11      numDeriv_2016.8-1.1 lubridate_1.7.10